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

📄 keyboard.lst

📁 我做的畢業設計,用AT89S51 控制LCD1602作為顯示. DS1302時鐘芯片顯示時間,DS18B20測量溫度,還有4X4的鍵盤驅動.實現了一個計算功能.可以用PROTUES 仿真軟件仿真,當時
💻 LST
字号:
C51 COMPILER V7.50   KEYBOARD                                                              04/09/2007 18:39:43 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          
   2          /**************************************************************************
   3            
   4                           
   5            
   6             File Name:       keyboard.c
   7             Author:          liao xu ming
   8             Created:         2007/3/23
   9             Modified:            NO
  10             Revision:            1.0
  11            
  12          ***************************************************************************/
  13          
  14          #include"keyborad.h"
  15          #include"clock.h"
  16          #define KEY_PORT P1 
  17          
  18          void    Delay_Ms2(uchar i)
  19          {       uchar j;
  20   1              for(;i>0;i--)
  21   1                      for(j=125;j>0;j--);
  22   1      }
  23          
  24          
  25                  uchar   Kbscan(void)
  26                  {       uchar sccode;   //行输出
  27   1                      uchar recode;   // 列输入                                    
  28   1                      KEY_PORT=0xf0;                                               //有键按下的那一行列都为0,取反后为1
  29   1                      if((KEY_PORT&0xf0)!=0xf0)  //条件成立=有键按下              //1=0x11; 2=0x21; 3=0x41; 4=0x81; 
  30   1                              {                                                            //5=0x12; 6=0x22; 7=0x42; 8=0x82;
  31   2                                      Delay_Ms2(10);     //去抖动     延时                     //9=0x14; a=0x24; b=0x44; c=0x84
  32   2                                      if((KEY_PORT&0XF0)!=0XF0)                            //d=0x18; e=0x28; f=0x48; 0=0x88 
  33   2                                              {   
  34   3                                                      sccode=0xfe;
  35   3                                                      while((sccode&0x10)!=0)
  36   3                                                              {
  37   4                                                                      KEY_PORT=sccode;
  38   4                                                                      if((KEY_PORT&0xf0)!=0xf0)
  39   4                                                                              {   
  40   5                                                                                  recode=(KEY_PORT&0xf0)|0x0f;  
  41   5                                                                                      KEY_PORT=0xf0;                   
  42   5                                                                              while((KEY_PORT&0XF0)!=0XF0){};//等待按键放开
  43   5                                              LCD_LIGHT=0;                   //开LCD 的背光灯 
  44   5                                                                                      LCD_LIGHT_FLAG=1;              //LCD背光灯开标志
  45   5                                                                              count_50ms=0;                  //LCD背光灯开启计时  
  46   5                                                                                      return ((~sccode)+(~recode));  
  47   5                                              }                                   
  48   4                                                                      else                                     
  49   4                                                                              {                                      
  50   5                                                                                      sccode=(sccode<<1)|0x01;
  51   5                                                                              }
  52   4                                                               }//end while
  53   3                                                }//end if two
  54   2                               }//end if first
  55   1      
C51 COMPILER V7.50   KEYBOARD                                                              04/09/2007 18:39:43 PAGE 2   

  56   1                        return(KEY_NOTHING);
  57   1              }//end Kbscan
  58          
  59           
  60          
  61          unsigned char   Keyboard(void)
  62          {   unsigned char returnkey;
  63   1              unsigned char keytemp;
  64   1              keytemp=Kbscan();
  65   1              switch(keytemp)
  66   1                {     
  67   2                          case 0x11:  returnkey=DIV;         break;
  68   2                                      case 0x21:      returnkey=EQUAL;       break;
  69   2                                      case 0x41:      returnkey=ZERO;        break;
  70   2                                      case 0x81:      returnkey=KEY_FUNCTION;break;
  71   2                                      case 0x12:      returnkey=MUL;         break;
  72   2                                      case 0x22:      returnkey=THREE;       break;
  73   2                                      case 0x42:      returnkey=TWO;         break;
  74   2                                      case 0x82:      returnkey=ONE;         break;
  75   2                                      case 0x14:  returnkey=DEC;         break;
  76   2      
  77   2      
  78   2                                      case 0x24:      returnkey=SIX;         break;
  79   2                                      case 0x44:      returnkey=FIVE;        break;
  80   2                                      case 0x84:      returnkey=FOUR;        break;
  81   2                                      case 0x18:      returnkey=ADD;         break;
  82   2                                      case 0x28:      returnkey=NINE;        break;
  83   2                                      case 0x48:      returnkey=EIGHT;       break;
  84   2                                      case 0x88:  returnkey=SEVEN;       break;
  85   2                                      case KEY_NOTHING:   returnkey=KEY_NOTHING; break;
  86   2                                      default:                                break;     //           returnkey=returnkey;
  87   2                              
  88   2                }
  89   1               return returnkey;
  90   1      }


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