有谁能回答以下几个问题?我想了两天也想不明白(主要关于单片机的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
展开
 我来答
yes__mcu
2013-11-04 · TA获得超过923个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:436万
展开全部
T0模式3的时候,被分成两个8位的定时器。T0可以设置成计数器或定时器模式,T1只能是定时器模式。按照你的设置,T0设置为计数器模式,T1设置为定时器模式。T1为250个周期溢出一次,至于为什么是500us,而不是250us,这个和晶振频率有关,可以看看晶振频率是多少。
CLR P3.4
NOP
NOP(负跳变持续两个周期有什么作用)这里持续2个周期,是为了让单片机可靠的识别跳变信号。
追问
12MHz晶振,我怀疑是不是书本出错了,是这样的吗?
追答
如果是12M晶振,那250个周期就是250us。教材上写错了。你也可以通过程序推算出来:
R3 * (256 - TL0) * TH0 = 1S ,R3 = 20,TL0 = 200,所以TH0溢出一次耗时250us
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式