|
給個(gè)栗子
- #include <reg52.h>
- typedef unsigned char u8; //0 to 255
- typedef unsigned int u16; //0 to 65535
- typedef unsigned long u32; //0 to 4294967295
- sbit KEY_32 = P3^2;
- u8 mode = 0;
- u16 TMR_XX_PRE = 6000;
- u8 index = 0;
- void key_Proc()
- {
- static u16 Delay_XD=0;
- if(!KEY_32)
- {
- if(Delay_XD<0xFFFF)Delay_XD++;
- if(Delay_XD==250)
- {
- mode = ++mode %4;
- index = 0;
- P1 = 0xFF;
- }
- }
- else
- Delay_XD = 0;
- }
- void Led_Flow()
- {
- static u16 TMR_XX_ACC;
- if(++TMR_XX_ACC >= TMR_XX_PRE)
- {TMR_XX_ACC=0;
- switch (mode)
- {
- case 0:
- P1 = ~(0x01 << index);
- index = ++index %8;
- break;
- case 1:
- P1 = ~(0x80 >> index);
- index = ++index %8;
- break;
- case 2:
- if(index < 8)
- P1 &= ~(0x01 <<index);
- else
- P1 |= (0x01 <<(index-8));
- if(++index >15)
- {
- index = 0;
- }
- break;
- }
- }
- }
- void main()
- {
- while (1)
- {
- key_Proc();
- Led_Flow();
- }
- }
復(fù)制代碼 |
|