模拟建筑塔钟 下载本文

内容发布更新时间 : 2024/7/1 9:15:00星期一 下面是文章的全部内容请认真阅读。

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

程序如下:

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 DEC R0

取个位数,并占低半字节 加1 十进制调整 个位数送缓冲单元 把十位数交换到低半字节 十位数送缓冲单元 返回 图4.3 加1子程序DAAD1程序流程图

加1子程序第 28 页 共 66 页

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

SWAP A ORL A,@R0

ADD A,#01H 加1 DA A 10进制调整 MOV R2,A 全值暂存R2中 ANL A,#0FH MOV @R0,A MOV A,R2 INC R0 ANL A,#0F0H SWAP A MOV @R0,A RET

4.1.4报时子程序

报时子程序的功能是用于自动报时,每个1个小时便报一次时间,时间到了几点就响几声。

程序如下:

ABC:MOV TMOD,#00H 设置T1工作方式0 MOV TH1,#0FCH 设置计数初值 MOV TL1,#03H

MOV IE,#00H 禁止中断 SETB TR1 定时开始 LOOP:JBC TF1,LOOP1 查询计数溢出 AJMP LOOP

LOOP1:MOV TH1,#0FCH 重新设置计数初值 MOV TL1,#03H

CPL P2.7 输出取反 DJNZ R3,ABC MOV R3,R4

第 29 页 共 66 页

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

4.1.5显示程序

显示数据在70H-75H单元内,用六位七段LED共阳极数码管显示,P0口输出段码数据,P3口作扫描控制,每个LED数码管亮1MS时间再逐位循环。

程序如下: DISPLAY: MOV MOV PLAY: MOV MOV MOV MOV MOVC MOV

R1,#70H ;指向显示数据首址 R5,#0FEH ;扫描控制字初值 A,R5 ;扫描字放入A P3,A ;从P3口输出 A,@R1 ;取显示数据到A DPTR,#TAB ;取段码表地址 A,@A+DPTR ;查显示数据对应段码 P0,A ;段码放入P0口

LCALL DL1MS ;显示1MS INC MOV JNB RL MOV AJMP ENDOUT: MOV MOV

R1 ;指向下一地址 A,R5 ;扫描控制字放入A ACC.5,ENDOUT ;ACC.5=0时一次显示结束 A ;A中数据循环左移 R5,A ;放回R5内 PLAY ;跳回PLAY循环

P3,#0FFH ;一次显示结束,P3口复位 P0,#0FFH ;P0口复位

RET ;子程序返回

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H; 1MS延时程序,LED显示程序用 DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ DJNZ RET0

第 30 页 共 66 页

R7,DL2 R6,DL1