【无标题】

本文介绍了如何使用51单片机的内部定时器实现电子秒表程序,并通过汇编语言编写中断服务程序。程序中详细展示了如何设置定时器、管理秒分时进位和清零,以及中断的启用和关闭。通过中断来实时更新秒表显示,确保了时间的准确性和实时性。
摘要由CSDN通过智能技术生成

51单片机的内部定时器定时中断,用汇编程序编写一段电子秒表程序。

如何使用中断

		ORG 0000H
		AJMP MAIN;
		ORG 001BH
		AJMP NEXT;
		ORG 0100H
MAIN:	
		MOV TMOD,  #10H;
		MOV TH1,   #3CH;
		MOV TL1,   #0B0H;设置定时时长
		SETB EA;
		SETB ET1;
		SETB TR1;

使用定时器比较重要的一点就是要为中断程序腾出一段位置,防止中断程序位置被其他程序(主程序挤占),没办法正常执行,定时器单次定时时间最长为216乘以机器周期,假设单片机频率为12MHz,那么机器周期为
1 12 × 1 0 6 × 12 = 1 u s \frac{1}{12×10^{6}}×12=1us 12×1061×12=1us
那么定时器单次定时时间最长为65536us,约为65ms,这是我们使用定时器时需要注意的。

如何管理秒分时进位和清零

每秒后取秒出来进行判断,若到了60,就执行进位操作,若不到60,则继续定时
主程序不断给P1,P2赋值,以稳定显示时间,中断移除,则优先执行中断服务,即判断是否需要更新时间。程序如下

		ORG 0000H
		AJMP MAIN;
		ORG 001BH
		AJMP NEXT;
		ORG 0100H
MAIN:	MOV 20H,   #2;
		MOV 21H,   #3;
		MOV 22H,   #10;
		MOV 23H,   #5;
		MOV 24H,   #9;
		MOV 25H,   #10;
		MOV 26H,   #1;
		MOV 27H,   #0;
		MOV R3,    #0;	
		MOV TMOD,  #10H;
		MOV TH1,   #3CH;
		MOV TL1,   #0B0H;
		SETB EA;
		SETB ET1;
		SETB TR1;
PRE:
		MOV R0,    #20H;
		MOV R7,    #8;
		MOV DPTR,  #TAB;
		MOV R1,    #11111110B;		
DIR:
		MOV A,     @R0;
		MOVC A,    @A+DPTR;
		MOV R2,    A;
		MOV P2,    R1;
		MOV P1,    R2;
		INC R0
		MOV A,     R1;
		RL A;
		MOV R1,    A;
		DJNZ R7,   DIR;
		SJMP PRE;
NEXT:
		MOV TH1,   #3CH;
		MOV TL1,   #0B0H;
		INC R3;
		CJNE R3,#20,EXIT;
		MOV R3,#0;
		MOV A,26H;
		MOV B,#10;
		MUL AB;
		ADD A,27H;
		INC A;
		MOV R4,A;
		MOV B,#10;
		DIV AB;
		MOV 26H,A;
		MOV 27H,B;
		CJNE R4,#60,EXIT
		MOV R4,#0;
		MOV 26H,#0;
		MOV 27H,#0;
		MOV A,23H;
		MOV B,#10;
		MUL AB;
		ADD A,24H;
		INC A;
		MOV R5,A;
		MOV B,#10;
		DIV AB;
		MOV 23H,A;
		MOV 24H,B;
		CJNE R5,#60,EXIT;
		MOV 23H,#0;
		MOV 24H,#0;
		MOV A,20H;
		MOV B,#10;
		MUL AB;
		ADD A,21H;
		INC A;
		MOV R6,A;
		MOV B,#10;
		DIV AB;
		MOV 20H,A;
		MOV 21H,B;
		CJNE R6,#24,EXIT;
		MOV 20H,#0;
		MOV 21H,#0;
EXIT:
		RETI
TAB:
		DB 3FH,06H,5BH,4FH,66H
		DB 6DH,7DH,07H,7FH,6FH
		DB 00H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值