找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2503|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

寫的單片機(jī)矩陣鍵盤的程序不知道那邊出現(xiàn)了錯誤,求大神

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:154562 發(fā)表于 2017-1-9 15:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit keyinx1=P3^0;
  5. sbit keyinx2=P3^1;
  6. sbit keyinx3=P3^2;
  7. sbit keyinx4=P3^3;
  8. sbit keyout1=P3^4;
  9. sbit keyout2=P3^5;
  10. sbit keyout3=P3^6;
  11. sbit keyout4=P3^7;

  12. sbit dula=P2^6;
  13. sbit wela=P2^7;

  14. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  15. uchar zankey[4][4]={
  16.                                    {1,1,1,1},
  17.                                    {1,1,1,1},
  18.                                    {1,1,1,1},
  19.                                    {1,1,1,1}
  20.                                    };

  21. void main(void)
  22. {
  23.         uchar i,j;
  24.         uchar beikey[4][4]={
  25.                                                 {1,1,1,1},
  26.                                                 {1,1,1,1},
  27.                                                 {1,1,1,1},
  28.                                                 {1,1,1,1}
  29.                                                 };
  30.         
  31.         dula=1;           //讓右一數(shù)碼管顯示
  32.         P0=table[0];
  33.         dula=0;
  34.         P0=0xff;
  35.         wela=1;
  36.         P0=0xdf;
  37.         wela=0;
  38.         
  39.         TMOD=0x01;           //定義定時器0
  40.         TH0=(65535-200000)>>8;
  41.         TL0=(65535-20000);
  42.         EA=1;
  43.         ET0=1;
  44.         TR0=1;
  45.         
  46.         while(1)
  47.         {
  48.                 for(i=0;i<4;i++)
  49.                 {
  50.                          for(j=0;j<4;j++)
  51.                          {
  52.                                   if(beikey[i][j]!=zankey[i][j])
  53.                                   {
  54.                                           if(beikey[i][j]==0)
  55.                                           {
  56.                                                    dula=1;           
  57.                                                 P0=table[i*4+j];
  58.                                                 dula=0;
  59.                                                 P0=0xff;
  60.                                                 wela=1;
  61.                                                 P0=0xdf;
  62.                                                 wela=0;

  63.                                           }
  64.                                           beikey[i][j]=zankey[i][j];
  65.                                   }
  66.                          }
  67.                 }
  68.         }

  69. }
  70. void T0_time() interrupt 1
  71. {
  72.         uchar i;
  73.         static uchar keyout=0;
  74.         static uchar butter[4][4]={
  75.         {0xff,0xff,0xff,0xff},
  76.         {0xff,0xff,0xff,0xff},
  77.         {0xff,0xff,0xff,0xff},
  78.         {0xff,0xff,0xff,0xff}
  79.         };
  80.         
  81.         TH0=(65535-20000)>>8;
  82.         TL0=(65535-20000);
  83.         
  84.         butter[keyout][0]=(butter[keyout][0]<<1)|keyinx1;
  85.         butter[keyout][1]=(butter[keyout][1]<<1)|keyinx2;
  86.         butter[keyout][2]=(butter[keyout][2]<<1)|keyinx3;
  87.         butter[keyout][3]=(butter[keyout][3]<<1)|keyinx4;
  88.         
  89.         switch(keyout)
  90.         {
  91.                  case 0:keyout1=0;keyout2=1;keyout3=1;keyout4=1;break;
  92.                  case 1:keyout1=1;keyout2=0;keyout3=1;keyout4=1;break;
  93.                  case 2:keyout1=1;keyout2=1;keyout3=0;keyout4=1;break;
  94.                  case 3:keyout1=1;keyout2=1;keyout3=1;keyout4=0;break;
  95.                  default:break;
  96.                
  97.         }

  98.         keyout++;
  99.         keyout&=0x03;
  100.         
  101.         for(i=0;i<4;i++)
  102.         {
  103.                  if((butter[keyout][i]&0x0f)==0x00)
  104.                  {
  105.                           zankey[keyout][i]=0;
  106.                  }
  107.                  else if(butter[keyout][i]&0x0f==0x0f)
  108.                  {
  109.                            zankey[keyout][i]=1;
  110.                  }
  111.         }
  112.         
  113. }
復(fù)制代碼

求大神幫我看看那邊有錯誤    單片機(jī)是郭天祥的板子  不知道那邊有問題

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:111634 發(fā)表于 2017-1-10 08:15 | 只看該作者
先學(xué)習(xí)正確的程序。
回復(fù)

使用道具 舉報

板凳
ID:154562 發(fā)表于 2017-1-10 22:32 | 只看該作者
zl2168 發(fā)表于 2017-1-10 08:15
先學(xué)習(xí)正確的程序。

????
回復(fù)

使用道具 舉報

地板
ID:161247 發(fā)表于 2017-1-11 07:00 來自手機(jī) | 只看該作者
寫的不夠精簡,用編譯軟件編譯
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表