汇编语言电子钟程序_第1页
汇编语言电子钟程序_第2页
汇编语言电子钟程序_第3页
汇编语言电子钟程序_第4页
汇编语言电子钟程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编电子钟:ORG 0000H;程序开始地址LJMP MAIN;跳到MAINORG 000BH;T0中断程序入口LJMP INTT0;跳到T0开始执行程序ORG 0100HMAIN:MOV R0,#70H;准备70H-79H 10个字节空间MOV R7,#09HCLRDISP:MOV R0,#00H;将70H-79H初始化为00HINC R0DJNZ R7,CLRDISPMOV TMOD,#01H;设T0为16位定时器MOV TL0,#0B0H;赋初始值MOV TH0,#3CHSETB EA;CPU开中断SETB ET0;允许T0中断SETB TR0;启动T0MOV R4,#14H;1S设定初

2、始值LOOP:LCALL DISP;调用显示程序JB P1.0,LOOP1;判断P1.0有无按下LCALL HOUR_SET;调用小时设定程序AJMP LOOPLOOP1:JB P1.1,LOOP2;判断P1.1有无按下LCALL MIN_SET;调用分设定程序AJMP LOOPLOOP2:JB P1.2,LOOP3;判断P1.2有无按下LCALL CLR0;调用清零程序,这里只清零秒AJMP LOOPLOOP3:AJMP LOOPHOUR_SET: CALL DISP;调用显示程序 JNB P1.0,HOUR_SET;P1.0按下跳到调小时程序 INC 78H;小时的个位加1 MOV R6,

3、78H CJNE R6,#10,HOUR1;个位不为10跳到HOUR1 MOV 78H,#0;个位清零 INC 79H;十位加1 JMP HOUR2;跳到HOUR2HOUR1:MOV R6,78H CJNE R6,#4,HOUR2;个位不为4跳到HOUR2 MOV R6,79H CJNE R6,#2,HOUR2;十位不为2跳到HOUR2 MOV 78H,#0;小时清零 MOV 79H,#0HOUR2:RET;调时返回MIN_SET: CALL DISP;调用显示程序 JNB P1.1,MIN_SET;P1.1按下跳到调分程序 INC 76H;分的个位加1 MOV R5,76H CJNE R5,

4、#10,MIS1;个位不为10跳到MIS1 MOV 76H,#0;个位清零 INC 77H;十位加1 MOV R5,77H CJNE R5,#6,MIS1;十位不为6跳到MIS1 MOV 77H,#0;分清零 MOV 76H,#0 RET MIS1:RET;调分返回INTT0:PUSH ACC;入栈,保护现场PUSH PSWCLR ET0;关闭中观允许CLR TR0;关闭中断MOV A,#0B7H;中断响应时间同步修正ADD A,TL0;低8位初值修正MOV TL0,AMOV A,#3CH ;高8位初值修正ADDC A,TH0MOV TH0,A SETB TR0 ;开启定时器T0DJNZ R4

5、,OUT ;20次中断未到中断退出ADDS: MOV R4,#14H;20次中断到重赋初值MOV R0,#71H;指向秒计时单元ACALL ADD1;调用ADD1MOV A,R3;秒数据放入ACLR C;清零进位标志CJNE A,#60H,ADDMM;秒是否到了60,是则跳转ADDMM:JC OUT ;小雨60秒中断退出ACALL CLR0;等于60秒调用CLR0清零秒MOV R0,#77H;指向分计时单元ACALL ADD1;调用ADD1MOV A,R3;分数据放入ACLR C;清零进位标志CJNE A,#60H,ADDH;分是否到了60,是则跳转ADDH:JC OUT ;小于60分时中断退

6、出ACALL CLR0;等于60分调用CLR0清零秒MOV R0,#79H;指向时计时单元ACALL ADD1;调用ADD1MOV A,R3;时数据放入ACLR C;清零进位标志CJNE A,#24H,HOUR;时是否到了24,是则跳转HOUR:JC OUT ;小于24时时中断退出ACALL CLR0;调用CLR0OUT:MOV 72H,76H ;将分的存储地址转移MOV 73H,77HMOV 74H,78H ;将时的存储地址转移MOV 75H,79HPOP PSW ;恢复现场POP ACCSETB ET0RETICLR0:CLR A ;清零AMOV R0,A ;清零R0存放地址中的数据DEC

7、 R0 ;R0地址减1MOV R0,ARETADD1:MOV A,R0;取当前计时单元数据到ADEC R0;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,R0;前一地址中数据放入A中低四位ADD A,#01H;A加1操作DA A;十进制调整MOV R3,A;移入R3寄存器ANL A,#0FH;高四位变0MOV R0,A;放回前一地址单元MOV A,R3;取回R3中暂存数据INC R0;指向当前地址单元SWAP A;A中数据高四位与低四位交换ANL A,#0FH;高四位变0MOV R0,A;数据放入当削地址单元中RET;子程序返回DISP: MOV R1,#70H ;指向显示

8、数据首址 MOV R5,#01H ;扫描控制字初值 PLAY:MOV A,R5 ;扫描字放入A MOV P2,A ;从P2口输出 MOV A,R1 ;取显示数据到A MOV DPTR,#TABLE ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 LCALL DL1MS ;显示1MS INC R1 ;指向下一地址 MOV A,R5 ;扫描控制字放入A JB ACC.5,ENDOUT ;ACC.5=0时一次显示结束 RL A ;A中数据循环左移 MOV R5,A ;放回R5内 AJMP PLAY ;跳回PLAY循环 ENDOUT: CLR P2.5 ;一次显示结束,P2口复位 RET ;子程序返回 TABL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论