⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.lst

📁 基于80c51的16*16矩阵键盘
💻 LST
字号:
C51 COMPILER V8.05a   TEXT1                                                                10/23/2007 20:50:58 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          #define KEY P1 
   3          unsigned char key_code,count=0,key_value=0,i=0;
   4          unsigned char LED_discode[]={ 0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
   5          unsigned char disbuf[]={0,0};
   6          unsigned char LED_bitcode[]={0x01,0x02};
   7          
   8          //********************************************************************************************************
             -*********
   9          void manage_key1(void)
  10          {   key_value=1;  }
  11          void manage_key2(void)
  12          {   key_value=2;  }
  13          void manage_key3(void)
  14          {   key_value=3;  }
  15          void manage_key4(void)
  16          {   key_value=4;  }
  17          void manage_key5(void)
  18          {   key_value=5;  }
  19          void manage_key6(void)
  20          {   key_value=6;  }
  21          void manage_key7(void)
  22          {   key_value=7;  }
  23          void manage_key8(void)
  24          {   key_value=8;  }
  25          void manage_key9(void)
  26          {   key_value=9;  }
  27          void manage_key10(void)
  28          {   key_value=10;  }
  29          void manage_key11(void)
  30          {   key_value=11;  }
  31          void manage_key12(void)
  32          {   key_value=12;  }
  33          void manage_key13(void)
  34          {   key_value=13;  }
  35          void manage_key14(void)
  36          {   key_value=14;  }
  37          void manage_key15(void)
  38          {   key_value=15;  }
  39          void manage_key16(void)
  40          {   key_value=16;  }
  41          //**********************************************************************************************
  42          bit judge_hitkey()
  43          {   unsigned char scancode;
  44   1          scancode=0x0f;
  45   1          KEY=scancode;
  46   1              if(KEY==0x0f) return 0;
  47   1              else return 1;
  48   1      }
  49          //******************************************
  50          unsigned char key_scan()
  51          {   unsigned char keycode,scancode;
  52   1          scancode=0xfe;
  53   1          while(scancode!=0xef)
  54   1              {    KEY=scancode;
C51 COMPILER V8.05a   TEXT1                                                                10/23/2007 20:50:58 PAGE 2   

  55   2                   keycode=KEY;
  56   2                   if((KEY&0xf0)!=0xf0) break;
  57   2                       scancode=~((~scancode)<<1);
  58   2              }
  59   1              keycode=~keycode;
  60   1              return(keycode);
  61   1      }
  62          //******************************************
  63          void key_manage(unsigned char keycode_1)
  64          {   switch(keycode_1)
  65   1          {    case 0x11:manage_key1();break;
  66   2                   case 0x12:manage_key2();break;
  67   2               case 0x14:manage_key3();break;
  68   2                   case 0x18:manage_key4();break;
  69   2                   case 0x21:manage_key5();break;
  70   2                   case 0x22:manage_key6();break;
  71   2                   case 0x24:manage_key7();break;
  72   2               case 0x28:manage_key8();break;
  73   2                   case 0x41:manage_key9();break;
  74   2                   case 0x42:manage_key10();break;
  75   2                   case 0x44:manage_key11();break;
  76   2                   case 0x48:manage_key12();break;
  77   2                   case 0x81:manage_key13();break;
  78   2                   case 0x82:manage_key14();break;
  79   2                   case 0x84:manage_key15();break;
  80   2                   case 0x88:manage_key16();break;
  81   2                       default:break;
  82   2               }
  83   1      }
  84          //******************************************
  85          void display(void)
  86          {    
  87   1           if(i==0)
  88   1           {  P3=0x00;
  89   2                  P2=LED_discode[disbuf[0]];
  90   2                  P3=0x01;
  91   2                      i=1;
  92   2               }
  93   1               else  {   P3=0x00;
  94   2                         P2=LED_discode[disbuf[1]];
  95   2                         P3=0x02;
  96   2                                 i=0;
  97   2                              }
  98   1      }
  99          //*******************************************
 100          void timer1_ger()
 101          {    TMOD=0x20;
 102   1           TR1=1;
 103   1               TH1=0x06;
 104   1               TL1=0x06;
 105   1           ET1=1;
 106   1               EA=1;
 107   1      }
 108          //*********************************************
 109          void main(void)
 110          { timer1_ger();
 111   1        while(1);
 112   1      }
 113          //****************************************************
 114          void timer1_scankey(void) interrupt 3
 115          {    ++count;
 116   1           disbuf[0]=key_value%10;
C51 COMPILER V8.05a   TEXT1                                                                10/23/2007 20:50:58 PAGE 3   

 117   1               disbuf[1]=key_value/10;
 118   1               display();      
 119   1           if(count%10==0)
 120   1               {    switch(count/10)
 121   2                    {    case 1:if(judge_hitkey()==0)
 122   3                                    {   count=0;
 123   4                                                    break;
 124   4                                                }
 125   3                                 case 2:break;
 126   3                                 case 3:if(judge_hitkey()==0) count=0;
 127   3                                                else  key_code= key_scan();
 128   3                                                break;
 129   3                                 default:if(judge_hitkey()==0)
 130   3                                         {   key_manage(key_code);
 131   4                                                     count=0;
 132   4                                                 }
 133   3                         }
 134   2                 
 135   2                }
 136   1      }
 137          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    395    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -