有谁能回答以下几个问题?我想了两天也想不明白(主要关于单片机的1s 延时)
用定时器0,方式3实现1s的延时TH0的计算初值:X=(256-250)=6=06HTL0的计算初值:(256-200)=56=38HTMOD=00000111B=07H...
用定时器0,方式3实现1s的延时
TH0的计算初值:X=(256-250)=6=06H
TL0的计算初值:(256-200)=56=38H
TMOD=00000111B=07H
DELAY:MOV R3,#14H
MOV TMOD,#07H
MOV TH0,#06H
MOV TL0,#38H
SETB TR0
SETB TR1
LP1:JBC TF1,LP2
SJMP LP1(教材上说未到500us继续计数,为什么不是250us继续计数?)
LP2:MOV TH0,#06H
CLR P3.4
NOP
NOP(负跳变持续两个周期有什么作用)
SETB P3.4
JBC TFO,LP3(TL0计数是多少)
SJMP LP1
LP3:MOV TL0,#38H
DJNZ R3,LP1
RET 展开
TH0的计算初值:X=(256-250)=6=06H
TL0的计算初值:(256-200)=56=38H
TMOD=00000111B=07H
DELAY:MOV R3,#14H
MOV TMOD,#07H
MOV TH0,#06H
MOV TL0,#38H
SETB TR0
SETB TR1
LP1:JBC TF1,LP2
SJMP LP1(教材上说未到500us继续计数,为什么不是250us继续计数?)
LP2:MOV TH0,#06H
CLR P3.4
NOP
NOP(负跳变持续两个周期有什么作用)
SETB P3.4
JBC TFO,LP3(TL0计数是多少)
SJMP LP1
LP3:MOV TL0,#38H
DJNZ R3,LP1
RET 展开
1个回答
展开全部
T0模式3的时候,被分成两个8位的定时器。T0可以设置成计数器或定时器模式,T1只能是定时器模式。按照你的设置,T0设置为计数器模式,T1设置为定时器模式。T1为250个周期溢出一次,至于为什么是500us,而不是250us,这个和晶振频率有关,可以看看晶振频率是多少。
CLR P3.4
NOP
NOP(负跳变持续两个周期有什么作用)这里持续2个周期,是为了让单片机可靠的识别跳变信号。
CLR P3.4
NOP
NOP(负跳变持续两个周期有什么作用)这里持续2个周期,是为了让单片机可靠的识别跳变信号。
追问
12MHz晶振,我怀疑是不是书本出错了,是这样的吗?
追答
如果是12M晶振,那250个周期就是250us。教材上写错了。你也可以通过程序推算出来:
R3 * (256 - TL0) * TH0 = 1S ,R3 = 20,TL0 = 200,所以TH0溢出一次耗时250us
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询