用汇编程序实现电子时钟

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。用汇编程序实现电子时钟,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

用汇编语言程序实现电子时钟

基本思想:
当需要编写程序实现较复杂的功能时,整个程序就如同一个装配体(总成),而子程序就如同装配体中的零件,子程序与主程序的接口就如同机械中的连接件将不同零件装配起来。
使用子程序能使程序结构更清晰,且逻辑不易发生错误。

实现电子时钟需要的子程序:
1.显示子程序disp
2.显示延时子程序dey1
3.中断服务intt0
4.中断服务退出子程序out
5.加一子程序add1
6.清空子程序clr0

应注意的事项:
1.位选应与段码输送相配合,若使用P2位选,P2.0连接最前端的数码管,则P2=#00000001B,即P2.0=1时,应输送小时的最高位段码
2.若通过P2左移实现显示,可通过左移次数判断一次显示是否完成,也可将P2的值赋给A,通过判断ACC.7是否为1得到一次显示是否完成,后者在实现上更方便
3.进入中断服务时,可将中断允许ET0先断开,在中断服务退出子程序中再将ET0打开,可减少计时误差
4.判断秒钟、分钟是否达到60,时钟是否达到24,用DJNE语句比用减法后判断JC更简单
5.当秒钟、分钟达到60,时钟达到24时,需调用清空子程序clr0将其清0
6.加一子程序add1可通过16进制数加#01h后通过十进制调整指令DA将其转换为10进制数,通过分别屏蔽高、低4位并通过SWAP指令分别赋给对应的显缓区
7.共阳极8位二极管显示0~9的段码分别为:

0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

显示横杠(——)的段码为0bfh
共阴极段码取反即可

程序代码如下:

org	0000h
ljmp	main
org	000bh
ljmp	intt0
org	0100h
main:	mov	tmod,#01h
mov	tl0,#0b0h
mov	th0,#3ch
setb	ea

setb	et0
setb	tr0
mov	r4,#20
mov	73h,#10
mov	76h,#10
mov	dptr,#table

loop:	lcall	disp
ljmp	loop

disp:	mov	r3,#01h
mov	r0,#78h

play:	mov	a,r3
mov	p2,a
mov	a,@r0
movc	a,@a+dptr
mov	p0,a
lcall	dey1
mov	a,r3
dec	r0
jb	acc.7,next
rl	a
	mov	r3,a
	ljmp	play
next:ljmp	disp

	


dey1:	mov	r6,#10
dl1:	mov	r7,#19h
dl2:	djnz	r7,dl2
	djnz	r6,dl1
ret

intt0:	push	acc
push	psw
clr	et0
clr	tr0
mov	tl0,#0b0h
mov	th0,#3ch
setb	tr0
djnz	r4,out
adds:	mov	r4,#20
mov	r0,#71h
lcall	add1
mov	a,r2
clr	c
cjne	a,#60h,addmin
addmin:	jc	out
lcall	clr0
mov	r0,#74h
lcall	add1
mov	a,r2
clr	c
cjne	a,#60h,addh
addh:	jc	out
lcall	clr0
mov	r0,#77h
lcall	add1
mov	a,r2
clr	c
cjne	a,#24h,hourreset
jc	out
hourreset:	lcall	clr0

out:	pop	psw
pop	acc
setb	et0
reti

add1:	inc	r0
mov	a,@r0
swap	a
dec	r0
orl	a,@r0
add	a,#01h
da	a
mov	r2,a
anl	a,#0fh
mov	@r0,a
mov	a,r2
anl	a,#0f0h
swap	a
inc	r0
mov	@r0,a
ret

clr0:	mov	a,#0
mov	@r0,a
dec	r0
mov	@r0,a
ret

table:	db	0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0bfh
end

使用proteus7.5仿真的效果如下:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153889.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!