专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机中断定时程序的应用

作者:李俊轩   来源:本站原创   点击数:  更新时间:2013年07月18日   【字体:

 学习进度真的有点慢,我觉得也许我不应该顾这顾那了,学习东西不能太“贪”,既学这方面的又学那方面的,学知识更要靠自己,自己为主,别人为辅。不能既学中断,定时,计数,又想着学数码管,按键的控制,我想这样只能让我鱼和熊掌兼失也。所以,李俊轩。好好的给自己定一个目标,然后努力吧,不要再捡了芝麻又丢了瓜了。

这是最近一直没有写日志的原因吧,最近学习的进度感觉特别慢。哎。又是浪费了一些天了,罪过罪过。

昨天杨老师给我布置的作业我想了好久都没有做出来,哎,失败,特别是那句更何况你是一个大学生,也许吧,我都没有做到一个学生的样,接下来的日子要好好努力了。至于13至27的显示,我想我会完成的,再给自己点时间,在51hei看N次这课中断http://www.51hei.com/mcuteach/234.html 后今天终于真正的把定时和中断应用和利用好了,做了几个程序,都成功了,呵呵,下面把其中一个程序拿出来作点留念吧。毕竟学这方面的知识浪费了自己不少时间,也许是自己努力还不够吧,现在想来,定时中断这些其实也挺简单的,只是之前听我们老师说,定时和中断会了,你的单片机就上了一个台阶了。所以自己把定时中断看得太高,太难学了。相信一句话:“一步一个脚印,坚持必有奇迹”,但更要把一些困难看得低一点,只要平时多思考,我相信我可以学好单片机的,虽然一个13至27现在把我难倒了,但我相信随着我知识学习的深入,这不是什么大问题的。努力。

程序:#include<reg52.h>
int j=0;int i=0,a=0;
unsigned char number[10]={
      0xc0,
      0xf9,
      0xa4,
      0xb0,
      0x99,
      0x92,
      0x82,
      0xf8,
      0x80,
      0x90
      };
void delay()
{
 int x,y;
 for(x=1001;x>0;x--)
  for(y=120;y>0;y--);
}
void main()

 TMOD |= 0x10;
 TMOD &= 0xdf;
 TH1 = (65536-50000)/256;
 TL1 = (65536-50000)%256;
 ET1 = 1;
 EA = 1;
 TR1 = 1;
 while(1)
 {
  P2 =~(1<<j++);
   delay();
  if(j==8)
  j=0;
 }
}
void timer0() interrupt 3

 TH1 = (65536-50000)/256;
 TL1 = (65536-50000)%256;

 a++;
 if (a==40)
 { 
 a = 0;
 

 P0 = number[i];
 i++;
 if(i==10)
 i=0;
 
 }
}


 

程序是用P2口控制LED灯以1S速度做流水灯功能的,P0口是用定时中断控制数码管加1的。

关闭窗口

相关文章