模拟建筑塔钟

南华大学机械工程学院毕业设计(论文)

程序如下:

PITO:MOV TL0,#0DCH 计数器重新加载 MOV TH0,#0BH MOV A,30H

DEC A 循环次数减1 MOV 30H,A

JNZ RET0 MOV 30H,#08H MOV R0,#70H ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#72H ACALL DAAD1 MOV A,R2

XRL A,#60H JNZ RET0

ACALL CLR0 MOV R0,#74H ACALL DAAD1 INC R3 MOV R4,R3

ACALL ABC MOV A,R2

XRL A,#24H JNZ RET0

ACALL CLR0 不满8次,转RETO返回 满8次,开始计时操作 秒显示缓冲单元地址 秒加1

加1后秒值在R2中 判断是否到60S 不到,则转RETO返回

到60S,则秒显示缓冲单元清0 分显示缓冲单元地址 分加1 判断是否到60MIN 到60MIN,则分显示缓冲单元清0 时显示缓冲单元地址 时加1 跳转到报时程序 判断是否到24H 到24H,则时显示缓冲单元清0

第 26 页 共 66 页

南华大学机械工程学院毕业设计(论文)

RET0:RETI

CLR0:CLR A 清缓冲单元子程序 MOV @R0,A 10位数缓冲单元清0 DEC R0

MOV @R0,A 个位数缓冲单元清0 RET

4.1.3加1子程序DAAD1

加1子程序用于完成对秒,分,时的加1操作,中断服务程序中在秒,分,时加1共有3处调用次子程序。流程图如下:

加1子程序的操作共包括以下3项内容:

1.合数。由于每位LED显示器对应一个8位缓冲单元,因此,由两位BCD码表示的时间值各占用一个缓冲单元,且只占其低4位。所以在加1运算前需要把两个缓冲单元中存放的数值合起来,构成一个字节,然后才能进行加1运算。所以也称为“合字”。

2.十进制调整。加1后须进行十进制调整。

3.分数。把加1后的时间值再拆分成两个字节,送回各自的缓冲单元中。

第 27 页 共 66 页

南华大学机械工程学院毕业设计(论文)

DAAD1 取十位数 使十位数占A高半字节 程序如下:

DAAD1:MOV A,@R0

>>闂傚倸鍊搁崐宄懊归崶顒夋晪鐟滃繘骞戦姀銈呯婵°倐鍋撶痪鎯ь煼閺岋綁骞囬锝嗏挅濠电偛妯婃禍婊堝礃閳ь剙顪冮妶鍡楀Ё缂傚秴妫楀玻鍧楁偄閸忓皷鎷虹紒缁㈠幖閹冲繗銇愯缁辨帡鎮╅崘鑼患缂備緡鍠栭悧鎾崇暦閹烘鍊烽悗鐢登圭敮鎯р攽閻樺灚鏆╁┑顔碱嚟閹广垹螣娓氼垳鈧埖銇勯弴妤€浜鹃梺鍝勭焿缁查箖骞嗛弮鍫晬婵炴垶锕╂导锟�<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4