采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数
AJMP MAIN
ORG 000BH
AJMP IT0P
MAIN:mov TMOD,#06H; 程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化)
mov TL0,#156H
mov TH0,#156H
SETB EA
SETB ET0
SETB TR0
CLR F0 ;设置下一轮为定时方式的标志位
WAIT: AJMP WAIT
IT0P: CLR EA ;CPU关闭中断
JB F0,EXTN1 ;F0=1转计数工作模式
mov TMOD,#00H
mov TL0,#ocH
mov TH0#0feH
SETB EA
RETI
EXTN1:mov TMOD,#06H
mov TL0,#156H
mov TH0,#156H
SETB EA
RETI
这是书上给出的答案,但这样并没有实现自动转换,要手动置F0的值才能转吧,怎么自动呢? 展开
ORG 0000HAJMP MAIN ORG 000BH AJMP IT0PMAIN:mov TMOD,#06H; 程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化) mov TL0,#156H mov TH0,#156H SETB EA
SETB ET0 SETB TR0 CLR F0 ;设置下一轮为定时方式的标志位WAIT: AJMP WAITIT0P: CLR EA ;CPU关闭中断JB F0,EXTN1 ;F0=1转计数工作模式mov TMOD,#00H
mov TL0,#oc mov TH0#0feH SETB EA RETIEXTN1:mov TMOD,#06H mov TL0,#156Hmov TH0,#156HSETB EA RETI
这是书上给出的答案,但这样并没有实现自动转换,要手动置F0的值才能转吧,怎么自动ORG 0000HAJMP MAIN ORG 000BHAJMP IT0PMAIN:mov TMOD,#06H;
程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化)mov TL0,#156H mov TH0,#156H SETB EA SETB ET0 SETB TR0 MOV R1,#00H ;清空计数器 CLR
F0 ;设置下一轮为定时方式的标志位 WAIT: AJMP WAITIT0P: CLR EA ;CPU关闭中断 JB F0,EXTN1 ;F0=1转计数工作模式SETB F0 mov TMOD,#00 mov TL0,#ocHmov
TH0#0feHSETB EARETEXTN1: INC R1 ;计数器加1 MOV A,R1CJNE A,#64H,EXTN2 ;计数是否到100CLR F0 ;开启计时标志MOV R1,#00HEXTN2:mov
TMOD,#06 mov TL0,#156H mov TH0,#156H SETB EA
扩展资料
采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。
假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现
(A timer / counter T0 is used to count the external pulse. After counting 100 pulses, T0 turns to a timing operation.
After timing 1ms, it turns to count mode, so the cycle is more than one. Suppose the frequency of the crystal oscillator of MCS-51 single chip is 6MHz, please use mode 1)
参考资料:百度百科-定时器
AJMP MAIN
ORG 000BH
AJMP IT0P
MAIN:mov TMOD,#06H; 程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化)
mov TL0,#156H
mov TH0,#156H
SETB EA
SETB ET0
SETB TR0
MOV R1,#00H ;清空计数器
CLR F0 ;设置下一轮为定时方式的标志位
WAIT: AJMP WAIT
IT0P: CLR EA ;CPU关闭中断
JB F0,EXTN1 ;F0=1转计数工作模式
SETB F0
mov TMOD,#00H
mov TL0,#ocH
mov TH0#0feH
SETB EA
RETI
EXTN1:
INC R1 ;计数器加1
MOV A,R1
CJNE A,#64H,EXTN2 ;计数是否到100
CLR F0 ;开启计时标志
MOV R1,#00H
EXTN2:
mov TMOD,#06H
mov TL0,#156H
mov TH0,#156H
SETB EA
RETI