单片机控制系统中采用12MHz晶振,定时器T0工作在方式2,现要实现1s定时,请写出实现过程。

如题所述

第1个回答  2016-01-10
12MHz晶振,定时器T0工作在方式2时单次最大定时为256us,现在要定时1S,需要采用累加定时的方式来实现,比如定时时长为250us,分4000次。
程序如下:
INT_COUNT_L DATA 30H
INT_COUNT_H DATA 31H

ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt
START:
MOV SP,#60H
LCALL InitTimer0
MOV INT_COUNT_L,#0
MOV INT_COUNT_H,#0
LOOP:

LJMP LOOP
InitTimer0:
MOV TMOD,#02H
MOV TH0,#00H ;定时250us
MOV TL0,#06H
SETB EA
SETB ET0
SETB TR0
RET
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#00H ;定时250us
MOV TL0,#06H
INC INT_COUNT_L
MOV A,INT_COUNT_L
CJNE A,#100,T0INT_EXIT
MOV INT_COUNT_L,#0
INC INT_COUNT_H
MOV A,INT_COUNT_H
CJNE A,#40,T0INT_EXIT
;1秒计时到了
MOV INT_COUNT_H,#0
;
T0INT_EXIT:
POP ACC
POP DPL
POP DPH
RETI
END本回答被提问者和网友采纳