/* 名称:TIMER0与TIMER1控制条形LED
说明:定时器T0定时控制上一组条形LED,滚动速度较快
定时器T1定时控制下一组条形LED,滚动速度较慢
*/
#includereg51.h>
#includeintrins.h>
#defineucharunsignedchar
#defineuintunsignedint
uchartc0=0,tc1=0;
//主程序
voidmain()
{
P0=0xfe;
P2=0xfe;
TMOD=0x11;//定时器0、定时器1均工作于方式1
TH0=(65536-15000)/256; //定时器0:15ms
TL0=(65536-15000)%256;
TH1=(65536-50000)/256; //定时器1:50ms
TL1=(65536-50000)%256;
IE=0x8a;
TR0=1; //启动定时器
TR1=1;
while(1);
//T0中断函数
voidTime0()interrupt1
{
TH0=(65536-15000)/256; //恢复定时器0初值
TL0=(65536-15000)%256;
if(++tc0==10) //150ms转换状态
{ tc0=0; P0=_crol_(P0,1); } } //T1中断函数 voidTime1()interrupt3 { TH0=(65536-50000)/256; //恢复定时器1初值 TL0=(65536-50000)%256; if(++tc1==10) //500ms转换状态 { tc1=0; P2=_crol_(P2,1); } } 扩展阅读:TIMER0控制流水灯程序