电子钟汇编程序

上传人:正** 文档编号:41293207 上传时间:2018-05-29 格式:DOC 页数:4 大小:37KB
返回 下载 相关 举报
电子钟汇编程序_第1页
第1页 / 共4页
电子钟汇编程序_第2页
第2页 / 共4页
电子钟汇编程序_第3页
第3页 / 共4页
电子钟汇编程序_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《电子钟汇编程序》由会员分享,可在线阅读,更多相关《电子钟汇编程序(4页珍藏版)》请在金锄头文库上搜索。

1、HOUREQU30H ;小时计数单元 MINEQU31H ;分钟计数单元 SECEQU32H ;秒计数单元 COUNT EQU33H ;50ms 计数单元 BUFEQU38H ;显示缓冲区首地址,共 3 字节ORG0 LJMPSTART ORG03H LJMPTR;外部 INTO 中断 ORG0BH LJMPTS;50ms 中断服务程序 ORG30H START: MOVSP,#60H;设置堆栈 MOVDPTR,#0FF20H MOVA,#03H MOVXDPTR,A;8155 初始化 MOVTMOD,#01H;设 T0 为方式 1 MOVTH0,#9EH MOVTL0,#58H;50ms 定

2、时初值 SETBPT0;设 T0 为高级中断 CLRPX0;INT0 为低级中断 SETBIT0;设外部中断 0 为边沿中断 SETBET0;允许 T0 中断 MOVCOUNT,#20; 50ms 计数单元赋初值 MOVHOUR,#0; 小时计数单元清零 MOVMIN,#0;分钟计数单元清零 MOVSEC,#0;秒计数单元清零 SETBTR0;启动计数 LOOP:JBP1.0,LM;若 K1=1 则转移到 LM SETBEX0;开 INT0 中断 LJMPOUT LM:CLREX0;关 INT0 中断 OUT: CLREA;关中断,避免读数时显示跳动 MOVBUF,HOUR;存小时到显示缓冲区

3、 MOVBUF+1,MIN; 存分钟到显示缓冲区 MOVBUF+2,SEC; 存秒到显示缓冲区 SETBEA;开中断 LCALL DISP;调显示子程序 SJMPLOOP ;显示程序 ;将 BUF 单元的 3 字节 BCD 码送数码管显示 DISP:MOVR0,#BUF;送显示缓冲区首址MOVR6,#3;共显示 3 个字节的 BCD 码MOVR7,#1;位码初值 DISP1: MOVA,R0;取要显示的压缩 BCD 码 ANLA,#0FH;屏蔽高 4 位 MOVDPTR,#DISP_TAB; MOVCA,A+DPTR;查表得段码 ANLA,#7FH;点亮末尾小数点 MOVDPTR,#0FF22

4、H;指向 8155B 口 MOVXDPTR,A;字形码送 B 口 MOVA,R7 MOVDPTR,#0FF21H;指向 A 口 MOVXDPTR,A RLA;位码 A 左移一位 MOVR7,A;存位码 LCALLDELAY;延时 2msMOVA,#00H MOVXDPTR,A;消隐 MOVA,R0 SWAPA;高低四位交换 ANLA,#0FH MOVDPTR,#DISP_TAB MOVCA,A+DPTR MOVDPTR,#0FF22H MOVX DPTR,A MOVA,R7 MOVDPTR,#0FF21H MOVXDPTR,A RLA MOVR7,A LCALLDELAYMOVA,#00H;消

5、隐 MOVXDPTR,A INCR0;指向下一个待显示数据 DJNZR6,DISP1;没显示完循环 RET DISP_TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,07FH,0FFH ;50ms 定时中断服务程序 TS: PUSHPSW;保护现场 PUSHACC PUSHDPH PUSHDPLCLRTR0;停止 T0 计数MOVTH0,#9EH;50ms 定时初值 MOVTL0,#58H SETBTR0;启动 T0 计数 DJNZCOUNT,EXIT;中断不够 20 次返

6、回 MOVCOUNT,#20;送 20 次中断计数初值 MOVA,SEC;取秒计数 ADDA,#1;秒加 1 DAA;调整为 BCD 码 MOVSEC,A;存秒 CJNEA,#60H,EXIT;不到 60 秒则退出 MOVSEC,#0;秒单元清零 MOVA,MIN;取分计数 ADDA,#1;分加 1 DA A;调整为 BCD 码 MOVMIN,A;存分 CJNEA,#60H,EXIT;不到 60 分则退出 MOVMIN,#0;分清零 MOVA,HOUR;取小时 ADDA,#1;小时加 1 DAA;调整为 BCD 码 MOVHOUR,A;存小时 CJNEA,#24H,EXIT;不到 24 小时则

7、退出 MOVHOUR,#0;小时清零 EXIT:POPDPL;恢复现场 POPDPH POPACC POPPSW RETI ;INT0 中断服务程序 TR:PUSHPSW;保护现场 PUSHACC PUSHDPH PUSHDPLJBP1.1,LM1;若 K2=1 则转到 LM1 MOV A, MIN;取分计数 ADDA,#1;分钟加 1 DAA;调整为 BCD 码 MOVMIN,A;存分 CJNEA,#60H,NEXT;不到 60 分转 NEXT MOVMIN,#0;分清零 LJMPNEXT LM1:MOVA,HOUR;取小时计数 ADDA,#1DAA MOVHOUR,A CJNEA,#24H,NEXT;不到 24 小时则转 MOVHOUR,#0 NEXT:POPDPL;恢复现场 POPDPH POPACC POPPSW RETI;中断返回DELAY: MOVR3,#250;2ms 延时 L1: NOP NOP DJNZR3,L1 RET END

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号