原理圖
- #include<reg52.h> //正常情況下流水燈正常顯示,按下按鍵K3,后8個流水燈同時亮滅一次,時間間隔是0.5s
- #define u8 unsigned char
- #define u16 unsigned int
- sbit k3=P3^2;
- void delay0_5s() //T0 工作方式1 0.5s延時
- {
- u8 i;
- for(i=0;i<10;i++)
- {
- TH1=0x3c;
- TL1=0xb0;
- TR0=1;
- while(!TF0);
- TF0=0;
- }
- }
- void delay( u8 t)
- {
- u8 i;
- for(i=0;i<t;i++)
- delay0_5s();
- }
- void int_0() interrupt 0
- {
- delay();
- if(k3==0)
- {
- P2=0xff;
- delay0_5s;
- P2=0x00;
- delay0_5s;
- }
- }
- void Intoint()
- {
- IT0=1; //觸發方式
- EX0=1;
- EA=1;
- }
- void main()
- {
- u8 i,w;
- void Intoint();
- TMOD=0x01;
- while(1)
- {
- w=0x01;
- for(i=0;i<8;i++)
- {
- P2=~w;
- w<<=1;
- delay(2);
- }
- }
- }
復制代碼
|