- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit keyinx1=P3^0;
- sbit keyinx2=P3^1;
- sbit keyinx3=P3^2;
- sbit keyinx4=P3^3;
- sbit keyout1=P3^4;
- sbit keyout2=P3^5;
- sbit keyout3=P3^6;
- sbit keyout4=P3^7;
- sbit dula=P2^6;
- sbit wela=P2^7;
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- uchar zankey[4][4]={
- {1,1,1,1},
- {1,1,1,1},
- {1,1,1,1},
- {1,1,1,1}
- };
- void main(void)
- {
- uchar i,j;
- uchar beikey[4][4]={
- {1,1,1,1},
- {1,1,1,1},
- {1,1,1,1},
- {1,1,1,1}
- };
-
- dula=1; //讓右一數碼管顯示
- P0=table[0];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xdf;
- wela=0;
-
- TMOD=0x01; //定義定時器0
- TH0=(65535-200000)>>8;
- TL0=(65535-20000);
- EA=1;
- ET0=1;
- TR0=1;
-
- while(1)
- {
- for(i=0;i<4;i++)
- {
- for(j=0;j<4;j++)
- {
- if(beikey[i][j]!=zankey[i][j])
- {
- if(beikey[i][j]==0)
- {
- dula=1;
- P0=table[i*4+j];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xdf;
- wela=0;
- }
- beikey[i][j]=zankey[i][j];
- }
- }
- }
- }
- }
- void T0_time() interrupt 1
- {
- uchar i;
- static uchar keyout=0;
- static uchar butter[4][4]={
- {0xff,0xff,0xff,0xff},
- {0xff,0xff,0xff,0xff},
- {0xff,0xff,0xff,0xff},
- {0xff,0xff,0xff,0xff}
- };
-
- TH0=(65535-20000)>>8;
- TL0=(65535-20000);
-
- butter[keyout][0]=(butter[keyout][0]<<1)|keyinx1;
- butter[keyout][1]=(butter[keyout][1]<<1)|keyinx2;
- butter[keyout][2]=(butter[keyout][2]<<1)|keyinx3;
- butter[keyout][3]=(butter[keyout][3]<<1)|keyinx4;
-
- switch(keyout)
- {
- case 0:keyout1=0;keyout2=1;keyout3=1;keyout4=1;break;
- case 1:keyout1=1;keyout2=0;keyout3=1;keyout4=1;break;
- case 2:keyout1=1;keyout2=1;keyout3=0;keyout4=1;break;
- case 3:keyout1=1;keyout2=1;keyout3=1;keyout4=0;break;
- default:break;
-
- }
- keyout++;
- keyout&=0x03;
-
- for(i=0;i<4;i++)
- {
- if((butter[keyout][i]&0x0f)==0x00)
- {
- zankey[keyout][i]=0;
- }
- else if(butter[keyout][i]&0x0f==0x0f)
- {
- zankey[keyout][i]=1;
- }
- }
-
- }
復制代碼
求大神幫我看看那邊有錯誤 單片機是郭天祥的板子 不知道那邊有問題
|