(1)
COUNT_INT EQU 30H
LEDVALUE EQU 31H
ORG 0000H
LJMP START
ORG 001BH
LJMP Timer1Interrupt
START:
MOV SP,#60H
MOV COUNT_INT,#0
MOV LEDVALUE,#01H
LCALL InitTimer1
LOOP:
MOV A,LEDVALUE
MOV P2,A
LJMP LOOP
InitTimer1:
MOV TMOD,#10H;定时器T1为工作方式1,产生50ms定时
MOV TH1,#3CH
MOV TL1,#0B0H
SETB EA
SETB ET1
SETB TR1
RET
Timer1Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH1,#3CH
MOV TL1,#0B0H
;========================
INC COUNT_INT
MOV A,COUNT_INT;每50ms加1,
CJNE A,#2,Timer1Interrupt_EXIT;100ms
MOV COUNT_INT,#0
MOV A,LEDVALUE
RL A
MOV LEDVALUE,A
;========================
Timer1Interrupt_EXIT:
POP ACC
POP DPL
POP DPH
RETI
END(2)
COUNT_INT_L EQU 30H
COUNT_INT_H EQU 31H
LEDVALUE EQU 32H
ORG 0000H
LJMP START
ORG 001BH
LJMP Timer1Interrupt
START:
MOV SP,#60H
MOV COUNT_INT_L,#0
MOV COUNT_INT_H,#0
MOV LEDVALUE,#01H
LCALL InitTimer1
LOOP:
MOV A,LEDVALUE
MOV P2,A
LJMP LOOP
InitTimer1:
MOV TMOD,#20H;定时器T1为工作方式2,产生250us定时
MOV TH1,#00H
MOV TL1,#06H
SETB EA
SETB ET1
SETB TR1
RET
Timer1Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH1,#00H
MOV TL1,#06H
;========================
INC COUNT_INT_L
MOV A,COUNT_INT_L;每250us加1,
CJNE A,#40,Timer1Interrupt_EXIT;250US*40=10ms
MOV COUNT_INT_L,#0
INC COUNT_INT_H
MOV A,COUNT_INT_H;每10Ms加1,
CJNE A,#10,Timer1Interrupt_EXIT;10ms*10=100MS
MOV COUNT_INT_H,#0
MOV A,LEDVALUE
RL A
MOV LEDVALUE,A
;========================
Timer1Interrupt_EXIT:
POP ACC
POP DPL
POP DPH
RETI
END
温馨提示:答案为网友推荐,仅供参考