百度知道 - 信息提示

日期:2025-01-13 02:30:41 人气:1

百度知道 - 信息提示

    A+
热门评论

51单片机c语言编写流水灯程序?

51单片机的定时器估计是所有MCU里面最简单的定时器了,所涉及到的寄存器不多,就那么几个,如TMOD(模式寄存器),TCON(控制寄存器),具体内容你可以去查看51的DATA SHEET。 在使用的时候,先设置定时器模式,再设置控制寄存器,这些设置都是按照自己的需要来定。 例如你这个功能,4S的定时,你可以这么设置。 /********************************************************** 定时器初始化函数,50mS定时,为什么是50mS不是4S?因为定时器为16位定时模式,最大定时时间为65.535mS,以50mS方便计算 ***********************************************************/ void Timer_Init( void ) { TMOD = 0x01;//定时器0 ,工作方式1,十六位定时模式 TH0 = ( 65536 - 50000 ) / 256; //高八位数据 TL0 = ( 65536 - 50000 ) % 256;//低八位数据 定时时间大概为50mS,具体视晶振频率而定 EA = 1;//因为你要用到中断,所以打开总中断 ET0 = 1;//运行定时器0的中断 TR0 = 1;//定时器0开始计数,当你需要让它停止计数的时候让它等于0就可以了 } void main() { Timer_Init();//调用定时器初始化函数 while(1) { //你的程序 } } //再写个中断服务函数 void Timer0( void ) interrupt 1 { static unsigned char count = 0;//该变量用来计50mS的个数,当count = 8时,为4S TH0 = ( 65536 - 50000 ) / 256; //再给定时器赋初值,否则将改变为复位值 TL0 = ( 65536 - 50000 ) % 256;// count++; if( count == 8 ) { count = 0; //4S到了,该干嘛干嘛去 } }

阅读全文