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

📄 keyboard.lst

📁 在keil下实现的普通4X4键盘和595显示驱动
💻 LST
字号:
C51 COMPILER V7.50   KEYBOARD                                                              05/29/2008 23:43:03 PAGE 1   


C51 COMPILER V7.50, 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          #include<intrins.h>
   3          
   4          #define uchar unsigned char
   5          #define port P1
   6          uchar code encode[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};//0~9
   7          
   8          uchar keyvalue,ledbuff4[4];
   9          uchar cnter4;
  10          bit keyflag;
  11          
  12          void delay500(uchar n)
  13          {
  14   1          uchar i;
  15   1          for( ; --n ; )
  16   1              for( i=80 ; i!=0 ; --i );
  17   1      }
  18          
  19          void keyscan()
  20          {
  21   1          uchar a,b,c;
  22   1          keyflag = 0;
  23   1          port = 0xff;
  24   1          port = 0x0f;
  25   1          if( port==0x0f ) return;
  26   1          delay500( 20 );
  27   1          if( port==0x0f ) return ;
  28   1          keyflag = 1;
  29   1          a = port;
  30   1          port = 0xf0;
  31   1          _nop_();
  32   1          b = port;
  33   1          c = a^b;
  34   1          switch( c )
  35   1          {
  36   2              case 0x77: keyvalue=0; break;   //对按键附值//
  37   2              case 0x7b: keyvalue=1; break;  
  38   2              case 0x7d: keyvalue=2; break;  
  39   2              case 0x7e: keyvalue=3; break;  
  40   2              case 0xb7: keyvalue=4; break;  
  41   2              case 0xbb: keyvalue=5; break;  
  42   2              case 0xbd: keyvalue=6; break;  
  43   2              case 0xbe: keyvalue=7; break;  
  44   2              case 0xd7: keyvalue=8; break;  
  45   2              case 0xdb: keyvalue=9; break;  
  46   2              case 0xdd: keyvalue=10;break;  
  47   2              case 0xde: keyvalue=11;break;  
  48   2              case 0xe7: keyvalue=12;break;  
  49   2              case 0xeb: keyvalue=13;break;  
  50   2              case 0xed: keyvalue=14;break;  
  51   2              case 0xee: keyvalue=15;break;
  52   2          }
  53   1      }
  54          
  55          void display4()
C51 COMPILER V7.50   KEYBOARD                                                              05/29/2008 23:43:03 PAGE 2   

  56          {
  57   1          uchar t=cnter4;
  58   1              P2 = 0xff;
  59   1              _nop_() , _nop_() , _nop_();
  60   1              t = t%4;
  61   1              if( t==0 )
  62   1                  P2 = encode[ledbuff4[0]] , P0 = 0xf7;
  63   1              else if( t==1 )
  64   1                  P2 = encode[ledbuff4[1]] , P0 = 0xfb;
  65   1              else if( t==2 )
  66   1                  P2 = encode[ledbuff4[2]] , P0 = 0xfd;
  67   1              else if( t==3 )
  68   1                  P2 = encode[ledbuff4[3]] , P0 = 0xfe;
  69   1              else
  70   1                  P2 = 0xfe , P0 = 0xf0;
  71   1      }
  72          
  73          void initbuff4()
  74          {
  75   1          ledbuff4[3] = 10 , ledbuff4[2] = 10;
  76   1          ledbuff4[0] = keyvalue%10;
  77   1          if( keyvalue>=10 )
  78   1                  ledbuff4[1] = 1;
  79   1              else
  80   1                  ledbuff4[1] = 0x0a;
  81   1      }
  82          
  83          int main()
  84          {
  85   1          SP = 0x60 , EA = 0;
  86   1          cnter4 = 0;
  87   1              TH0 = (65536-400)/256;
  88   1              TL0 = (65536-400)%256;
  89   1              TMOD = 0x01 , TCON = 0x10;
  90   1              IE = 0x82;
  91   1          while( 1 )
  92   1          {
  93   2              keyscan();
  94   2              initbuff4();
  95   2              delay500(200);
  96   2          }
  97   1      }
  98          
  99          void t0isr()using 2 interrupt 1
 100          {
 101   1              TR0 = 1;
 102   1          TH0 = (65536-2500)/256;
 103   1              TL0 = (65536-2500)%256;
 104   1              cnter4 = (cnter4+1)&0x03;//0~128
 105   1              display4();
 106   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    357    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.50   KEYBOARD                                                              05/29/2008 23:43:03 PAGE 3   


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

⌨️ 快捷键说明

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