源程序如下- #include<reg52.h>
- #include<intrins.h>
- sbit key1=P3^4;
- sbit key2=P3^5;
- sbit key3=P3^6;
- int k,n,a,b;
- k=40;//定时器装初值为50ms 40次即2s
- //延时函数
- void delay(int xms)
- {
- int i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- //按键扫描
- void keyscan()
- {
- if(key1==0)
- {
- delay(10);
- if(key1==0)
- {
- b=~b;//取反改变流水灯方向
- while(!key1);
- }
- }
- if(key2==0&&(k>=10&&k<80))
- {
- delay(10);
- if(key2==0)
- {
- k=(k+10);//加10 增加500ms
- while(!key2);
- }
- }
- if(key3==0&&(k>10&&k<=80))
- {
- delay(10);
- if(key3==0)
- {
- k=(k-10);//减10 减少500ms
- while(!key3);
- }
- }
- }
- void main()
- {
- a=0xfe;
- P0=a;
- TMOD=0x01;
- TH0=(65536-45872)/256;
- TL0=(65536-45872)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- keyscan();
- }
- }
- void T0_time() interrupt 1
- {
- TH0=(65536-45872)/256;
- TL0=(65536-45872)%256;
- n++;
- if(n==k)
- {
- n=0;
- if(b)
- {
- a=_cror_(a,1);
- P0=a;
- }
- if(!b)
- {
- a=_crol_(a,1);
- P0=a;
- }
- }
- }
复制代码 源程序附件下载
定时器控制流水灯.rar
(26.68 KB, 下载次数: 28)
|