当前位置:编程学习 > 汇编语言 >>

求一个设计,用单片机做出电子时钟,要汇编语言的,有的发我邮箱,2236591958@qq.com,谢谢,简单点的就行

答案:;//***********开辟三个存储单元存放小时、分钟、秒的二进制数值****************** hour equ 30h min equ 31h sec equ 32h ;//*****************程序开始***************** org 00h sjmp start org 0bh ajmp int_t0 org 13h ajmp int_int0 org 30h start: mov p2,#00h ; P2清零 mov sp,#60h mov dptr,#table mov r2,#20 ;中断20次 setb ea ;中断允许 setb et0 ;T0溢出中断允许 setb ex1 ;T1溢出中断允许 setb px1 ;外部中断1中断优先级控制 setb it1 ; 外部中断1中断触发方式为边沿触发 mov tmod,#01h ; T0模式1 mov th0,#60 ;设置初值 mov tl0,#176 mov r0,#0 ;// setb tr0 ;T0运行控制 ;//*************************小时显示************************* display:mov r1,#01h mov b,#10 mov a,hour div ab acall disscan mov a,r1 rl a mov r1,a mov a,b acall disscan ;//**********************分隔线显示************************** acall fenggexian ;//*********************分钟显示***************************** mov b,#10 mov a,r1 rl a mov r1,a mov a,min div ab acall disscan mov a,r1 rl a mov r1,a mov a,b acall disscan ;//***********************分隔线显示****************************** acall fenggexian ;//***********************秒显示*************************** mov b,#10 mov a,r1 rl a mov r1,a mov a,sec div ab acall disscan mov a,r1 rl a mov r1,a mov a,b acall disscan ljmp display ;//***************************分隔线显示子程序************************ fenggexian: mov p0,#0bfh mov a,r1 rl a mov r1,a mov p2,r1 mov r5,#1 acall delay mov p2,#0 mov r5,#1 acall delay ret ;//*****************************数码显示******************************* disscan:movc a,@a+dptr mov p0,a mov p2,r1 ;允许哪个数码管显示 mov r5,#2 acall delay mov p2,#0 ; 关闭数码管 mov r5,#1 acall delay ret ;//*****************************延时子程序***************************** delay: mov r6,#10 d1: mov r7,#100 djnz r7,$ djnz r6,d1 djnz r5,delay ret ;//*******************************定时中断服务程序******************************* int_t0: push acc dec r2 ; 中断一次减一 cjne r2,#00,next ;判断是否中断20次 mov r2,#20 inc sec ;中断20次则加一秒 mov a,sec cjne a,#60,next ;判断是否达到1分钟 mov sec,#0 inc min mov a,min cjne a,#60,next ; 判断是否达到一小时 mov min,#0 inc hour mov a,hour cjne a,24,next ; 判断是否达到24小时 mov hour,#0 next: mov th0,#60 ; 重新设定初值 mov tl0,#176 pop acc reti ;//****************************外部中断服务程序**************************** int_int0: inc r0 ;每按一下则R0加一 cjne r0,#1,two ; 判断R0是否为2 setb tr0 ;T0运行控制 sjmp exit two: cjne r0,#2,three ; 判断R0是否为3 clr tr0 ;T0运行终止 sjmp exit three: mov hour,#0 ;显示管清零 mov min,#0 mov sec,#0 mov r0,#0 exit: reti ;//*****************************共阳极数码管段码表**************************** table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
其他:汇编语言电子钟程序
http://wenku.zhaoxi.net/view/92be7df37c1cfad6195fa759.html 我手上有。看我名

上一个:怎样把汇编采集的AD用数码管显示(没除法指令)
下一个:用汇编语言怎么将AL寄存器最高位置1

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,