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

📄 keyboard.lst

📁 线反转法矩阵键盘扫描驱动七段数码LED --线反转法比普通矩阵键盘扫描算法精简许多
💻 LST
字号:
C51 COMPILER V8.12   KEYBOARD                                                              04/10/2009 17:37:12 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          sbit ENDIS=P0^7;    //LED显示输出
   4          sbit ENLED=P0^6;   //LED共极使能
   5          sbit SPK=P2^7;    //喇叭输出脚
   6          
   7          delay(int z)  //延时子程序
   8           { int x,y;
   9   1         for (x=z;x>0;x--)
  10   1         for (y=140;y>0;y--); 
  11   1       }
  12          
  13           void yin()              //喇叭驱动子程序
  14           { 
  15   1        int i,j;
  16   1         for(i=0;i<80;i++)
  17   1         {                               
  18   2         for(j=0;j<50;j++);   //延时
  19   2            SPK=~SPK;       //取反输出到喇叭的信号
  20   2         }
  21   1         
  22   1       }
  23          unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
             -1,0x00};        //LED段码
  24          
  25          void main()
  26          {uchar x,y,z,num;
  27   1        num=16;
  28   1        ENLED=1;
  29   1        P2=0X00;
  30   1        ENLED=0;
  31   1        ENDIS=1;
  32   1        P1=table[num];
  33   1        ENDIS=0;
  34   1        while(1)
  35   1        {     P3=0xff;
  36   2          P3=0x0f; 
  37   2          if(P3!=0x0f)
  38   2                { delay(5);
  39   3                  if(P3!=0x0f)
  40   3                  {  
  41   4                 x=P3;          //保存行扫描时有键按下时状态
  42   4                 P3=0xf0;       //列扫描
  43   4                 y=P3;          //保存列扫描时有键按下时状态
  44   4                 z=x|y;         //取出键值
  45   4                 switch ( z )   //判断键值(哪一个键按下)
  46   4                 {
  47   5                  case 0xee: num=0; break; //对键值赋值
  48   5                  case 0xde: num=1; break; 
  49   5                  case 0xbe: num=2; break; 
  50   5                  case 0x7e: num=3; break; 
  51   5                  case 0xed: num=4; break; 
  52   5                  case 0xdd: num=5; break; 
  53   5                  case 0xbd: num=6; break; 
  54   5                  case 0x7d: num=7; break; 
C51 COMPILER V8.12   KEYBOARD                                                              04/10/2009 17:37:12 PAGE 2   

  55   5                  case 0xeb: num=8; break; 
  56   5                  case 0xdb: num=9; break;     
  57   5                  case 0xbb: num=10;break; 
  58   5                  case 0x7b: num=11;break; 
  59   5                  case 0xe7: num=12;break; 
  60   5                  case 0xd7: num=13;break; 
  61   5                  case 0xb7: num=14;break; 
  62   5                  case 0x77: num=15;break; 
  63   5                 }   
  64   4                          while((P3&0xf0)!=0xf0);      //等待键位释放
  65   4                              yin();
  66   4                          ENLED=1;
  67   4                  P2=0X00;
  68   4                  ENLED=0;
  69   4                  ENDIS=1;
  70   4                  P1=table[num];
  71   4                  ENDIS=0;
  72   4                       }
  73   3                                      
  74   3               }
  75   2      
  76   2        }
  77   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    285    ----
   CONSTANT SIZE    =     17    ----
   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 + -