C语言使用定时器的方法控制LED灯以1S的速度闪亮

最近因为赶不上提高班的进度,老师给的教程总是断断续续的,所以我打算跟11月1号通过考试的网友们一起学习,呵呵,这也是我一教训来着,在三维里学习要坚持一步一个脚印,坚持必有奇迹,但也要跟得上大家,以后再忙也要努力实现计划了,不能再像这次一样,因为所谓的考试落下了好几堂课,不过也没有关系,能够吸取点教训总是好的。我可以先给自己点时间多学些其它的基础知识。

今天开始学单片机的计数器了,呵呵,可能是一直因为用C语言编程序我定时老是定不准的原因,当得知学会定时/计数器后可以让单片机C语言定时准确后,我感觉学它真的很有动力,虽然编一个简单的程序也花了我好长时间,但编出来的感觉却是那么的爽快,我觉得要学会定时/计数器,关键是要学会编程控制 TCOM,TMOD,及TH和TL吧。主要是TH和TL的准确运算。还有就是完时以后怎么样让其跟循环语句配合使用。

今天所编的程序是利用单片机定时器控制LED灯以1S的速度闪烁,我的晶振是12MHZ的,首先是让计时器0.02S进行一次溢出,使TF1=1,其次是利用I++循环50次,加起来为1S。程序如下:

#include<reg52.h>
sbit LED = P1^2;
void main()
{ unsigned char i;
 TMOD |= 0x10;
 TMOD &= 0xdf;
 TH1 = 0xb1;
 TL1 = 0xdf;
 TCON |= 0x40;
 while(1)
 {
  if(TF1==1)
  {
   TF1 = 0;
   TH1 = 0xb1;
   TL1 = 0xdf;
   i++;
    if(i==50)
    {
     i=0;
     LED=~LED;
    }
   }
 }
}

永不止步步 发表于11-30 09:13 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号