当要求定时器T1实现1S定时时,你将如何实现1秒钟的定时间隔;
1个回答
关注
展开全部
定时时间=(最大计数值-计数器初值)*机器周期=(最大计数值-计数器初值)*(12/晶振频率(Hz))(s)=(256-TH1)*(12/OSC_FREQ(Hz))(s)。那么溢出频率自然就为:OSC_FREQ(Hz)/((256-TH1)*12)。所以最后推到出波特率为:(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))。波特率的计算公式有了,那自然就可以根据波特率推导出TH1的初值了:BAUD_RATE=(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))32*12*(256-TH1)=(2SMOD*OSC_FREQ(Hz))/BAUD_RATE256-TH1=(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)TH1=256-(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)假设晶振频率为11.0592MHz,波特率为9600,SMOD=0,TH1初值应该为多少呢?根据上面公式可以计算得TH1=256-11059200/(9600*32*12)=0xFD。
咨询记录 · 回答于2022-05-19
当要求定时器T1实现1S定时时,你将如何实现1秒钟的定时间隔;
您好
采用中断方法编写串行口方式3下的发送接收程序,并回答下面问题。假设51单片机主频为11.0592MHz。波特率对应计数器的初值为多少?写出计算公式
定时时间=(最大计数值-计数器初值)*机器周期=(最大计数值-计数器初值)*(12/晶振频率(Hz))(s)=(256-TH1)*(12/OSC_FREQ(Hz))(s)。那么溢出频率自然就为:OSC_FREQ(Hz)/((256-TH1)*12)。所以最后推到出波特率为:(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))。波特率的计算公式有了,那自然就可以根据波特率推导出TH1的初值了:BAUD_RATE=(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))32*12*(256-TH1)=(2SMOD*OSC_FREQ(Hz))/BAUD_RATE256-TH1=(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)TH1=256-(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)假设晶振频率为11.0592MHz,波特率为9600,SMOD=0,TH1初值应该为多少呢?根据上面公式可以计算得TH1=256-11059200/(9600*32*12)=0xFD。
已赞过
评论
收起
你对这个回答的评价是?