51单片机机器周期和定时器0使用

        先说机器周期,最近玩51单片机,发现里面有强大的内部时钟,下载的居然可以随意修改,很骚。比以前的51确实好玩多了。

感觉现在用51做东西完全不比32差了,还不知道性能怎么样。不好意思跑题了。这里先想一个问题,如果我改变了频率,程序中的

延时函数,或者定时器,串口这些频率都变了,需要自己重新算才行。

      51单片机的一个机器周期等于12个振荡周期,振荡周期其实就是晶振的周期。所以51单片机的机器周期=freq/12

如果此时单片机晶振频率为24M。那么机器周期就是24/12=2M,所以机器周期的频率就是2M,对应的时间就是500ns,

此时单片机的处理速度就是大约500ns一个指令。

     了解了上面的东西,我们可以写一个ms延时函数,经过测试,时间还是挺准的。

void Delay1ms()		//@24.000MHz
{
	unsigned char i, j;
	i = 24;
	j = 168;
	do
	{
		while (--j);
	} while (--i);
}

定时器的运用:

其实定时器每次计数的周期就是一个机器周期,所以可以算出,如果要做一个1us的定时器中断,只需把计数值写为2即可。

定时器的各种配置就不说了,东西还是挺多的。

//timer init  //1us进入
void T0_init()
{
   TMOD |=0x1;   //T0 mode 1
   TH0  =(65536-(2))/256;
   TL0  =(65536-(2))%256;
   EA   =1;      //总中断
   ET0  =1;      //定时器0中断
   TR0  =1;      //定时器使能


}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值