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

定时器计数LED显示的简单程序

作者:佚名   来源:本站原创   点击数:  更新时间:2009年11月15日   【字体:

/*
注:该程序主要是如何运用定时器进行计数
体现模块化的子函数,是一个比较浅显的程序
*/

#include<reg52.h> //头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar count;  //定义全局变量
void display_led() //led显示子函数
{
 if(count==20) //每隔1S发生变化(晶振为:12MHZ)
 {
  count=0;   //计数清零,以便下次计数
  P2=~P2;   //P2的值取反
  P2=P2<<1; //P2的值左移
  P2=~P2;
  if(P2==0xff) //如果最后一个LED亮后,
  P2=0xfe;  //则第一个LED亮
 } 
}
void init()   //初始化子函数  
{
 EA=1; //打开总中断
 ET0=1; //打开定时器中断
 TR0=1;  //启动定时器
 TMOD=0x01; //T0工作方式1,16位计数
 TH0=(65536-50000)/256;//设置定时器的初始值
 TL0=(65536-50000)%256;
 P2=0xfe;   //给P2口赋初始值
 while(1)
 {
 display_led(); //调用LED显示子函数
 }
}
void main()  //主函数
{
 init(); //调用初始化子函数
}
void delay() interrupt 1  //定时中断子函数
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 count++;  //计数变量自加1
}
 

关闭窗口

相关文章