岩棉复合板厂家
免费服务热线

Free service

hotline

010-00000000
岩棉复合板厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

采用定时器0产生多个时间间隔

发布时间:2020-06-30 19:47:34 阅读: 来源:岩棉复合板厂家

采用单片机定时器0产生多个时间间隔。程序中使用定时器0每50ms中断一次,然后用全局变量tt,t1,t2,t3,t4,t5对中断次数计数,获得100ms,1s,2s,4s,8s,16s间隔,在各个定时间隔内,分别使LED灯亮灭一次。源程序如下: #include AT89X51.H> unsigned char tt,t1,t2,t3,t4,t5; //全局时间隔变量 unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92, 0x82,0xF8,0x80,0x90}; //七段数码管译码表 void main(void) //主函数 { TMOD=0x01; //定时器0运行在工作模式1,GATE=0,C/T=0 TH0=(65536-15536)/256; //设置定时器0高8位初值 TL0=(65536-15536)%256; //设置定时器0低8位初值 //若是机器周期为1μs,则计数50000,相当于50ms。 TR0=1; //启动定时器 ET0=1; //允许定时器0中断 EA=1; //允许总中断 while(1) //无限循环 { if(t1>5) P2_0=0; else P2_0=1; //根据时间间隔变量值闪烁LED灯 if(t2>10) P2_1=0; else P2_1=1; if(t3>20) P2_2=0; else P2_2=1; if(t4>40) P2_3=0; else P2_3=1; if(t5>80) P2_4=0; else P2_4=1; P1=dispcode[t4/10]; //显示间隔变量t4的十位 P0=dispcode[t4%10]; //显示间隔变量t4的个位 }} void t0(void) interrupt 1 //定时器0中断服务程序 { TH0=(65536-15536)/256; //设置定时器0高8位初值(3CH) TL0=(65536-15536)%256; //设置定时器0低8位初值(B0H) tt++; //每中断一次,tt加1 if(tt==2) //如果tt等于2,相当于100ms,执行如下语句 { tt=0; //将tt清0,所以tt的计数值为0---1---2(0),每个间隔为50ms t1++; if(t1==10){t1=0;} t2++; if(t2==20){t2=0;} t3++; if(t3==40){t3=0;} t4++; if(t4==80){t4=0;} t5++; if(t5==160){t5=0;} P2_6=~P2_6; //每100ms,P2_6连接的LED灯闪烁一次 } }

黑龙江制做防静电工作服

定工程服

山西西服制作