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

📄 ex.lst

📁 AT89S52单片机 程序 矩阵键盘
💻 LST
字号:
C51 COMPILER V8.02   EX                                                                    10/16/2008 11:44:14 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE EX
OBJECT MODULE PLACED IN ex.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ex.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //****************Copyright (c)*************
   2          //         成都麟鑫科技有限责任公司
   3          //         http://www.linxinpro.com
   4          //******************************************
   5          /*2007年11月19日
   6            矩阵键盘试验及数码管移位显示试验
   7            按键输入0~F的数据
   8            数码管动态移位显示
   9            通过改变time变量可以改变动态显示效果
  10            采用逐行扫描法实现矩阵键盘输入
  11            */
  12          #include<reg51.h>
  13          #define uint unsigned int
  14          #define uchar unsigned char
  15          uchar code tab1[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0~
             -F字形代码
  16          uint data1=0,data2=0,data3=0,data4=0;time=100;//全局变量
  17          sbit P1_0=P1^0;
  18          sbit P1_1=P1^1;
  19          sbit P1_2=P1^2; 
  20          sbit P1_3=P1^3;
  21          void delay(uint tx);//延时程序
  22          void keys();            //判断键值子程序
  23          void skeys();           //扫描键盘子程序
  24          void show(uint tx1,uint tx2,uint tx3,uint tx4);//数据显示子程序
  25          void main () //主程序
  26          {
  27   1              uint i;
  28   1              P1_3=1;//初始化数码管控制位
  29   1              P1_2=1;
  30   1              P1_1=1;
  31   1              P1_0=1;
  32   1              while(1)
  33   1              {
  34   2                      skeys();//扫描键盘
  35   2                      show(data1,data2,data3,data4);//显示数据
  36   2              }
  37   1      }
*** WARNING C280 IN LINE 27 OF EX.C: 'i': unreferenced local variable
  38          /*判断键值*/
  39          void keys()
  40          {
  41   1              P0=0xef;        //判断是否为第一行按键按下
  42   1              if(P0<0xef)
  43   1              {
  44   2                  data4=data3;//数据移位操作
  45   2                      data3=data2;
  46   2                      data2=data1;
  47   2                      if(P0==0Xee)
  48   2                              data1=0;
  49   2                      if(P0==0xed)
  50   2                              data1=1;
  51   2                      if(P0==0xeb)
  52   2                              data1=2;
  53   2                      if(P0==0xe7)
C51 COMPILER V8.02   EX                                                                    10/16/2008 11:44:14 PAGE 2   

  54   2                              data1=3;                        
  55   2                      while(P0!=0xef)
  56   2                              show(data1,data2,data3,data4);//等待按键断开
  57   2              }
  58   1              P0=0xdf;    //判断是否为第二行按键按下
  59   1              if(P0<0xdf)
  60   1              {
  61   2                  data4=data3;//数据移位操作
  62   2                      data3=data2;
  63   2                      data2=data1;
  64   2                      if(P0==0Xde)
  65   2                              data1=4;
  66   2                      if(P0==0xdd)
  67   2                              data1=5;
  68   2                      if(P0==0xdb)
  69   2                              data1=6;
  70   2                      if(P0==0xd7)
  71   2                              data1=7;
  72   2                      while (P0!=0xdf)
  73   2                              show(data1,data2,data3,data4);//等待按键断开
  74   2              }
  75   1              P0=0xbf;        //判断是否为第三行按键按下
  76   1              if(P0<0xbf)
  77   1              {
  78   2              data4=data3;//数据移位操作
  79   2                      data3=data2;
  80   2                      data2=data1;
  81   2                      if(P0==0Xbe)
  82   2                              data1=8;
  83   2                      if(P0==0xbd)
  84   2                              data1=9;
  85   2                      if(P0==0xbb)
  86   2                              data1=10;
  87   2                      if(P0==0xb7)
  88   2                              data1=11;
  89   2                      while (P0!=0xbf)
  90   2                              show(data1,data2,data3,data4);//等待按键断开
  91   2              }
  92   1              P0=0x7f;        //判断是否为第四行按键按下
  93   1              if(P0<0x7f)
  94   1              {
  95   2                      data4=data3;//数据移位操作
  96   2                      data3=data2;
  97   2                      data2=data1;
  98   2              if(P0==0X7e)
  99   2                              data1=12;
 100   2                      if(P0==0x7d)
 101   2                              data1=13;
 102   2                      if(P0==0x7b)
 103   2                              data1=14;
 104   2                      if(P0==0x77)
 105   2                              data1=15;
 106   2                      while (P0!=0x7f)
 107   2                              show(data1,data2,data3,data4);//等待按键断开
 108   2              }
 109   1      }
 110          /*扫描矩阵键盘*/
 111          void skeys()
 112          {
 113   1              uint j=0;
 114   1              P0=0x0f;
 115   1              if(P0<0x0f)
C51 COMPILER V8.02   EX                                                                    10/16/2008 11:44:14 PAGE 3   

 116   1              {
 117   2                      for(j=0;j<20;j++)
 118   2                              show(data1,data2,data3,data4);//软件消除抖动
 119   2                      if(P0<0x0f)
 120   2                              keys();
 121   2              }
 122   1      }
 123          /*延时子程序*/
 124          void delay(uint tx)
 125          {
 126   1              uint x=tx;
 127   1              do
 128   1                      x--;
 129   1              while(x>1);
 130   1      }
 131          /*显示按键键值*/
 132          void show(uint tx1,uint tx2,uint tx3,uint tx4)
 133          {
 134   1              P2=tab1[tx1];
 135   1              P1_0=0;
 136   1              delay(time);
 137   1              P1_0=1;
 138   1              P2=tab1[tx2];
 139   1              P1_1=0;
 140   1              delay(time);
 141   1              P1_1=1;
 142   1              P2=tab1[tx3];
 143   1              P1_2=0;
 144   1              delay(time);
 145   1              P1_2=1;
 146   1              P2=tab1[tx4];
 147   1              P1_3=0;
 148   1              delay(time);
 149   1              P1_3=1;
 150   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    485    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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