8051汇编——精确延时

利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz

ORG		0000H
LJMP	MAIN

ORG		0100H
SECOND  EQU		R7
MINUIT  EQU		R6
HOUR    EQU		R5

MAIN:
MOV		SECOND,		#0
MOV		MINUIT,		#0
MOV		HOUR,		#0	
LOOP:
JB		P3.0,		LOOP;2US				
LCALL   DELAY         ;2us+
LCALL   TIME_VARY     ;2us+
LCALL	TIME_DISP
LJMP    LOOP          ;2us

TIME_VARY:
	SECOND_OPER:
	MOV     A,      #1
	ADD     A,      SECOND
	DA      A
	MOV     SECOND, A
	CJNE    SECOND,     #60H,    N_CARRY1;2US
	CARRY1:
	MOV     SECOND, #0          ;1US
	MOV     A,      #1          ;1US
	ADD     A,      MINUIT      ;1US
	DA      A                   ;1US
	MOV     MINUIT, A           ;1US
	LJMP    MINUIT_OPER         ;2US
	N_CARRY1:
	NOP
	NOP
	NOP
	NOP
	NOP
	LJMP    MINUIT_OPER
	
	MINUIT_OPER:
	CJNE    MINUIT,     #60H,    N_CARRY2;2US
	CARRY2:
	MOV     MINUIT, #0          ;1US
	MOV     A,      #1          ;1US
	ADD     A,      HOUR      ;1US
	DA      A                   ;1US
	MOV     HOUR, A           ;1US
	LJMP    HOUR_OPER         ;2US
	N_CARRY2:
	NOP
	NOP
	NOP
	NOP
	NOP
	LJMP    HOUR_OPER
	
	HOUR_OPER:
	CJNE    HOUR,    #24H,    RETURN;2US
	MOV     HOUR,    #0	;1US
	RET					;2US
	RETURN:
	NOP
RET
TIME_DISP:
	MOV		P0,		HOUR
	MOV		P1,		MINUIT
	MOV		P2,		SECOND
RET	
DELAY:
;999,953US
MOV		R4,		#16
		LOOP1:  
		MOV		R3,		#253
				LOOP2:
				MOV		R2,		#122
						LOOP3:
						DJNZ	R2,		LOOP3	
				DJNZ	R3,		LOOP2
		NOP
		NOP
		NOP
		DJNZ	R4,		LOOP1
;2US
RET

END





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值