内容发布更新时间 : 2024/11/5 5:38:52星期一 下面是文章的全部内容请认真阅读。
南华大学机械工程学院毕业设计(论文)
程序如下:
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