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

📄 main.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:31:11 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <stdio.h>
   2          #include <absacc.h>
   3          #include <./Atmel/at89x52.h>
   4          extern void start_t2imer(void);
   5          unsigned char scankey;
   6          bit Timerout=0;
   7          bit keypress;
   8          #define KR0    P1_0
   9          #define KR1    P1_1
  10          #define KR2    P1_2
  11          #define KR3    P1_3
  12          #define KC0    P1_4
  13          #define KC1    P1_5
  14          #define KC2    P1_6
  15          #define KC3    P1_7
  16          #define KBD_PORT  P1
  17          #define FSM_INIT    0X00
  18          #define FSM_WAIT_PRESS  0X01
  19          #define FSM_VERFY1      0X02
  20          #define FSM_VERFY2      0X03
  21          #define FSM_WAIT_RELESE 0X04
  22          #define KBD_VAL_VAILD   0X80
  23          main(){
  24   1              unsigned char fsm_key=0;
  25   1              unsigned char kbd_col;
  26   1              unsigned char kbd_row;
  27   1              unsigned char key_val;
  28   1              IE=0X40;
  29   1              start_t2imer();
  30   1              EA=1;       /* Enable interrupts */
  31   1              while(1){
  32   2                      if(Timerout){
  33   3                              Timerout=0;
  34   3                              switch(fsm_key){
  35   4                                      case FSM_INIT:
  36   4                                              KR0=1;
  37   4                                              KR1=1;
  38   4                                              KR2=1;
  39   4                                              KR3=1;
  40   4                                              fsm_key=FSM_WAIT_PRESS;
  41   4                                              break;
  42   4                                      case FSM_WAIT_PRESS:
  43   4                                              if(keypress){
  44   5                                                      key_val=0;
  45   5                                                      if(KC0){
  46   6                                                              KC0=1;
  47   6                                                              kbd_col=1;
  48   6                                                      }
  49   5                                                      else if(KC1){
  50   6                                                              KC1=1;
  51   6                                                              kbd_col=2;
  52   6                                                      }
  53   5                                                      else if(KC2){
  54   6                                                              KC2=1;
  55   6                                                              kbd_col=3;
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:31:11 PAGE 2   

  56   6                                                      }
  57   5                                                      else if(KC3){
  58   6                                                              KC3=1;
  59   6                                                              kbd_col=4;
  60   6                                                      }
  61   5                                                      else{
  62   6                                                              fsm_key=FSM_INIT;
  63   6                                                      }
  64   5      
  65   5                                                      kbd_row =KBD_PORT;
  66   5                                  kbd_row >>=4;
  67   5                                                      if(kbd_row){
  68   6                                                              if(KR0){
  69   7                                                                      kbd_row=0;
  70   7                                                                      fsm_key=FSM_VERFY1;
  71   7                                                              }
  72   6                                                              else if(KR1){
  73   7                                                                      kbd_row=4;
  74   7                                                                      fsm_key=FSM_VERFY1;
  75   7                                                              }
  76   6                                                              else if(KR2){
  77   7                                                                      kbd_row=8;
  78   7                                                                      fsm_key=FSM_VERFY1;
  79   7                                                              }
  80   6                                                              else if(KR3){
  81   7                                                                      kbd_row=12;
  82   7                                                                      fsm_key=FSM_VERFY1;
  83   7                                                              }
  84   6                                                              else{
  85   7                                                                      fsm_key=FSM_INIT;
  86   7                                                              }
  87   6                                                      }
  88   5                                                      else{
  89   6                                                              fsm_key=FSM_INIT;
  90   6                                                      }
  91   5                                              }
  92   4                                              break;
  93   4                                      case FSM_VERFY1:
  94   4                                              switch(kbd_row){
  95   5                                                      case 0:
  96   5                                                              if(KR0) fsm_key=FSM_VERFY2;
  97   5                                                              else fsm_key=FSM_INIT;
  98   5                                                              break;
  99   5                                                      case 4:
 100   5                                                              if(KR1) fsm_key=FSM_VERFY2;
 101   5                                                              else fsm_key=FSM_INIT;
 102   5                                                              break;
 103   5                                                      case 8:
 104   5                                                              if(KR2) fsm_key=FSM_VERFY2;
 105   5                                                              else fsm_key=FSM_INIT;
 106   5                                                              break;
 107   5                                                      case 12:
 108   5                                                              if(KR3) fsm_key=FSM_VERFY2;
 109   5                                                              else fsm_key=FSM_INIT;
 110   5                                                              break;
 111   5                                                      default:
 112   5                                                              fsm_key=FSM_INIT;
 113   5                                                              break;
 114   5                                              }
 115   4                                              break;
 116   4                                      case FSM_VERFY2:
 117   4                                              switch(kbd_row){
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:31:11 PAGE 3   

 118   5                                                      case 0:
 119   5                                                              if(KR0) key_val=(kbd_row+kbd_col)|KBD_VAL_VAILD;
 120   5                                                              break;
 121   5                                                      case 4:
 122   5                                                              if(KR1) key_val=(kbd_row+kbd_col)|KBD_VAL_VAILD;
 123   5                                                              break;
 124   5                                                      case 8:
 125   5                                                              if(KR2) key_val=(kbd_row+kbd_col)|KBD_VAL_VAILD;
 126   5                                                              break;
 127   5                                                      case 12:
 128   5                                                              if(KR3) key_val=(kbd_row+kbd_col)|KBD_VAL_VAILD;
 129   5                                                              break;
 130   5                                                      default:                                                        
 131   5                                                              break;
 132   5                                              }
 133   4                                              KR0=1;
 134   4                                              KR1=1;
 135   4                                              KR2=1;
 136   4                                              KR3=1;
 137   4                                              fsm_key=FSM_WAIT_RELESE;
 138   4                                              break;
 139   4                                      case FSM_WAIT_RELESE:
 140   4                                              if(!keypress){
 141   5                                                      fsm_key=FSM_INIT;
 142   5                                              }
 143   4                                              break;
 144   4                                      default:
 145   4                                              fsm_key=FSM_INIT;
 146   4                                              break;
 147   4                              }
 148   3                      }
 149   2              }
 150   1      }
 151          void time2()interrupt 5 {//base 10 ms
 152   1              TF2=0;
 153   1              Timerout=1;
 154   1              scankey=KBD_PORT;
 155   1              if(scankey&0x0f){
 156   2                      keypress=1;     
 157   2              }
 158   1              else{
 159   2                      keypress=0;
 160   2              }
 161   1      
 162   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    310    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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