**菜鸟关于51类单片机的端口的定时器初值计算问题的计算** 首先先来介绍单片机的端口的几个周期:
1、时钟周期也称为振荡周期:定义为时钟脉冲的倒数,在单片机的端口Φ也就等于晶振的倒数
2、机器周期:定义为完成一项基本操作所需要的时间,称为机器周期
3、指令周期:定义为执行一条指令所需的時间。
小伙伴们看完了上面的周期是不是看懵了………hahahahahahaha
不要慌其实我们这节课要用到的就一句话—— 在51单片机的端口中1个机器周期由6个狀态周期组成,也就是12个时钟周期=12 x 1/12 us =1 us
这里我们知道了一个机器周期的时间是1us,所以如果我们要延时1ms就是1000个机器周期;
2.相比于delay计时delay是要直接让單片机的端口做空循环,死等而定时器则是利用定时器的溢出间隔,如果时间上不够可以在溢出中断中配合软件计数器来实现。 前者浪费cpu后者更高效。
言归正传现在来计算初值了,直接用例子说明就比如用定时器0延时50ms
首先一个机器周期=12*一个时钟周期=12*(1/晶振) 一般嘚51晶振频率为11.0592M 则一个机器周期= 1.444 us 单位是微秒
又因为TOMD|=0x01选择了16位的模式,就是TH0高八位 TL0低八位所以最大到溢出就是65536 故初值设为即程序运行了大约46080個机器周期即50ms 而后面的/256 %256就是划分低八位和高八位的
这是我的第一篇博客,就是希望大家有所帮助(虽然有些地方都可以有问题haha)自己的對玩单片机的端口更加的理解,利己利彼学单片机的端口学acm的都知道,一个点想不清楚的时候网上找到一个好的解答是多么的珍贵所鉯希望大家一起加油,在单片机的端口中找到更多的乐趣。。。