51单片机汇编语言定时器的使用(中断方式)
用汇编语言写51单片机的程序:(1)选择定时器T1为工作方式1,产生100ms定时,使P2口的八个发光二极管循环点亮。(2)选择定时器T1为工作方式2,产生100ms定时...
用汇编语言写51单片机的程序:
(1)选择定时器T1为工作方式1,产生100ms定时,使P2口的八个发光二极管循环点亮。
(2)选择定时器T1为工作方式2,产生100ms定时,使P2口的八个发光二极管循环点亮。
12MHz晶振 展开
(1)选择定时器T1为工作方式1,产生100ms定时,使P2口的八个发光二极管循环点亮。
(2)选择定时器T1为工作方式2,产生100ms定时,使P2口的八个发光二极管循环点亮。
12MHz晶振 展开
1个回答
展开全部
(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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询