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

📄 4x4.lst

📁 RZ-51V20 实例程序
💻 LST
字号:
C51 COMPILER V8.02   4X4                                                                   06/23/2009 00:01:31 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 4X4
OBJECT MODULE PLACED IN 4x4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4x4.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*行线接P1.0-P1.3,列线接P1.4-P1.7。
   2          
   3          
   4          根据扫描键盘返回的键值编码查键值编码表,从而得到键值并送数码管显示。
   5          
   6          开机时,数码管显示“-”。
   7          
   8          当键按下时,数码管显示按下键的键值,蜂鸣器响一声。*/ 
   9          
  10          #include <reg52.h>
  11          #include <intrins.h>
  12          
  13          #define uchar unsigned char
  14          #define uint  unsigned int
  15          
  16          sbit BEEP = P3^6;                  //蜂鸣器驱动线
  17          
  18          uchar  key;
  19          
  20          unsigned char code disp_code[]={
  21                        0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  22                        0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};
  23          
  24          unsigned char code key_code[]={
  25                        0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 
  26                        0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };
  27          
  28          /**********************************************************
  29          
  30            延时子函数
  31          
  32          **********************************************************/
  33          void delayms(uint ms) 
  34          {
  35   1         uchar t;
  36   1         while(ms--)
  37   1         { 
  38   2           for(t = 0; t < 120; t++);
  39   2         }
  40   1      }
  41          
  42          /**********************************************************
  43          
  44            x*0.14MS 延时子函数
  45          
  46          **********************************************************/
  47          void delay0(uchar x)    
  48          {
  49   1         uchar i;
  50   1         while(x--)
  51   1         {
  52   2           for (i = 0; i<13; i++) {;}
  53   2         }
  54   1      }
  55          
C51 COMPILER V8.02   4X4                                                                   06/23/2009 00:01:31 PAGE 2   

  56          /**********************************************************
  57          
  58            蜂鸣器驱动子函数
  59          
  60          **********************************************************/
  61          void beep()
  62          {
  63   1        uchar i;
  64   1        for (i=0;i<180;i++)
  65   1        {
  66   2          delay0(5);
  67   2          BEEP=!BEEP;       //BEEP取反
  68   2        } 
  69   1         BEEP=1;            //关闭蜂鸣器
  70   1         delayms(250);      //延时     
  71   1      }
  72          
  73          /**********************************************************
  74          
  75          键盘扫描子函数
  76          
  77          **********************************************************/
  78          uchar  keyscan()
  79          {
  80   1         uchar  scan1,scan2,keycode,j;
  81   1      
  82   1         P1=0xf0;
  83   1         scan1=P1;
  84   1         if((scan1&0xf0)!=0xf0)           //判键是否按下
  85   1         {
  86   2           delayms(30);                   //延时30ms
  87   2           scan1=P1;
  88   2           if((scan1&0xf0)!=0xf0)         //二次判键是否按下
  89   2           {
  90   3              P1=0x0f;
  91   3              scan2=P1;
  92   3              keycode=scan1|scan2;         //组合成键编码
  93   3      
  94   3              for(j=0;j<=15;j++)
  95   3              {
  96   4                 if(keycode== key_code[j])  //查表得键值
  97   4                 {
  98   5                    key=j;
  99   5                    return(key);
 100   5                 }
 101   4              } 
 102   3           }
 103   2         }
 104   1         else  P1=0xff;
 105   1      
 106   1         return (16);
 107   1      }
 108          
 109          /**********************************************************
 110          
 111            判键是否按下子函数
 112          
 113          **********************************************************/
 114          void  keydown()
 115          {  
 116   1         P1=0xf0;
 117   1         if((P1&0xf0)!=0xf0)
C51 COMPILER V8.02   4X4                                                                   06/23/2009 00:01:31 PAGE 3   

 118   1         {
 119   2           keyscan();
 120   2           P0=disp_code[key];
 121   2           beep();
 122   2         }
 123   1      } 
 124          
 125          /**********************************************************
 126          
 127          主函数
 128          
 129          **********************************************************/
 130          main()
 131          {
 132   1         P0 = 0xbf;
 133   1         P2 = 0x7f;            //数码管显示"-" 
 134   1          P1 = 0xff;
 135   1      
 136   1         while(1)
 137   1         {
 138   2           keydown();     
 139   2         }
 140   1      }
 141          
 142          /*********************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    165    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   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 + -