|
- #include<reg52.h>
- typedef unsigned char u8;
- typedef unsigned int u16;
- sbit rely=P1^4;
- sbit k1=P0^0;
- u8 m=0; //要用全局變量
- //u8 j=0; //有問題 u8 是0-255
- u16 j=0; //要用全局變量
- void InitTimer1(void) //定時器初始化函數(shù)
- {
- TMOD = 0x10;//定時2.5ms
- TH1 = 0xFC;
- TL1 = 0x18;
- TR1 = 0; //關(guān)定時器1定時器開關(guān)
- }
- void delay(u16 i)
- {
- while(i--);
- }
- void keyscan()
- {
- //u8 m=0; //有問題 要用全局變量
- if(m==0)
- {
- if(k1==0)
- {
- delay(1000);
- if(k1==0)
- {
- TR1=1; //打開定時器1定時器開關(guān)
- m=1;
- }
- while(!k1);
- }
- }
- else
- {
- if(k1==0)
- {
- delay(1000);
- if(k1==0)
- {
- rely=1;
- m=0;
- }
- while(!k1);
- }
- }
- }
- void process() //使用軟件查詢方式 定時計(jì)數(shù)器1
- {
- //u8 j=0; //有問題 要用全局變量
- if(TF1==1) // 定時器1溢出標(biāo)志位
- {
- TF0=0;
- TH0=0XFC;
- TL0=0X18;//定時1ms
- j++;
- if(j==2000) //1s
- {
- j=0;
- rely=0;
-
- }
- }
- }
- void main()
- {
- InitTimer1(); // 有問題 沒有執(zhí)行定時器初始化函數(shù)
- while(1)
- {
- keyscan();
- process();
- }
- }
復(fù)制代碼 |
|