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

📄 key.lst

📁 rfproV02发送程序和80C51演示程序
💻 LST
字号:
C51 COMPILER V7.50   KEY                                                                   11/15/2007 14:43:53 PAGE 1   


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

line level    source

   1          
   2          /*----------------------------- Program Overview -------------------------------
   3                           Device Name:   AT89S52
   4                                   ROM:   8 K bytes
   5                                   RAM:   512 bytes
   6                  Chip Basic Functions:   40pin, 32I/O, 16 bit Timer *3, 8 bit UART *1, Eight Interrupt Sources   
   7                                          4.0V to 5.5V Operating Range, OSC 11.0592 MHz (0.9216 us)
   8                              Complier:   keil C 750
   9                             Simulator:   keil C 750
  10                            Programmer:   
  11                             File Name:   key.c
  12                        File Functtion:   key function
  13                             Copyright:   XIAZHAOJUN
  14           First Version Finished Date:   2007.11.6
  15                                Others:   
  16          ------------------------------- Modified Note ----------------------------------
  17                           Old Version:   
  18                           New Version:
  19                          New CheckSum: 
  20                              Modifier:
  21                         Modified Date:
  22                    Modified Causation:
  23                         Modified Mean: 
  24          -------------------------------------------------------------------------------*/
  25          
  26          //----------------------------- Include ----------------------------------------
  27          #include <reg52.h>
  28          //#include <stdio.h>  
  29          #include<intrins.h>
  30          #include<com.h>
  31          #include<lcm.h>
  32          #include<fbuzz.h>
  33          #include<cmain.h>
  34          
  35          
  36          //----------------------------- SFR Definition ---------------------------------
  37          
  38          
  39          
  40          //----------------------------- Macro Definition -------------------------------
  41          #define uchar unsigned char
  42          #define uint unsigned int
  43          
  44          //----------------------------- Constant Definition ----------------------------
  45          
  46          
  47          
  48          //----------------------------- Variable Definition ----------------------------
  49                  unsigned char data key_io;
  50                  unsigned char data keyflag;
  51                  unsigned char data keyedge_old;
  52                  
  53          //      unsigned char keydat;
  54                  unsigned char data keyasic;
  55                  unsigned char data keytabdat;
C51 COMPILER V7.50   KEY                                                                   11/15/2007 14:43:53 PAGE 2   

  56          //----------------------------- Bit Definition ---------------------------------
  57                  unsigned char bdata keyedge;
  58          //sbit  flag            = keyedge^7;    
  59          sbit    b_off_fg   = keyedge^6; // off   
  60          sbit    b_on_fg    = keyedge^5; // on
  61          sbit    b_stop_fg  = keyedge^4; // stop
  62          sbit    b_right_fg = keyedge^3; // right
  63          sbit    b_left_fg  = keyedge^2; // left
  64          sbit    b_down_fg  = keyedge^1; // down  
  65          sbit    b_up_fg    = keyedge^0; // up 
  66          
  67          
  68          /*----------------------------- Subroutine -------------------------------------
  69                  Name: key_initial
  70              Function: 
  71                 Entry: 
  72                  Exit: 
  73               Caution: 
  74          -------------------------------------------------------------------------------*/       
  75          void key_initial(void){
  76   1      
  77   1              keyedge=0x00;
  78   1              keyflag=0x00;
  79   1              keyedge_old=0x00;
  80   1              key_io=0x00;
  81   1              
  82   1      //      keydat=0x00;
  83   1              keyasic=0x00;
  84   1      }
  85          
  86          /*----------------------------- Subroutine -------------------------------------
  87                  Name: Key_Det_col
  88              Function: read io
  89                 Entry: 
  90                  Exit: 
  91               Caution: 
  92          -------------------------------------------------------------------------------*/
  93          uchar Key_Det_col(uchar keycol){
  94   1              uchar keyio_dat;
  95   1              P1=(~keycol);
  96   1              _nop_();
  97   1              _nop_();
  98   1              keyio_dat=(~P1);
  99   1              return(keyio_dat);
 100   1      }
 101          
 102          /*----------------------------- Subroutine -------------------------------------
 103                  Name: Key_Detect
 104              Function: 
 105                 Entry: key_io
 106                  Exit: keyflag,keyedge_old,keyedge
 107               Caution: 
 108          -------------------------------------------------------------------------------*/
 109          void Key_Detect(void){  
 110   1              static unsigned char state=2;
 111   1              unsigned char keybuf;
 112   1              
 113   1              state++;
 114   1              if(state>2)
 115   1                      state=0x00;
 116   1              if(state<2)     
 117   1                      keybuf=Key_Det_col(state+1);
C51 COMPILER V7.50   KEY                                                                   11/15/2007 14:43:53 PAGE 3   

 118   1              switch (state){
 119   2                      case 0:
 120   2                              key_io&=0xf0;   //first cow
 121   2                              key_io|=(keybuf>>4);
 122   2                      break;
 123   2                      
 124   2                      case 1:                 //second cow
 125   2                              key_io&=0x0f;
 126   2                              keybuf&=0x70;
 127   2                              key_io|=keybuf;
 128   2                      break;
 129   2                      
 130   2                      case 2:
 131   2                              keybuf=keyflag&key_io;
 132   2                              
 133   2                      //方式0 限制新的按建的检测,必须等旧的按建松开,
 134   2                      //才去检测新的按建,更新为 方式1  ,可以解决这个问题。
 135   2                      //方式0
 136   2                      //      if(keybuf==0){
 137   2                      //              keyflag=key_io;    
 138   2                      //              keyedge_old=0x00;
 139   2                      //      }
 140   2                      //      else {
 141   2                      //              keyedge|=(keybuf&(~keyedge_old));
 142   2                      //              keyedge_old=keybuf;
 143   2                      //      }
 144   2                      //方式1
 145   2                              keyflag=key_io;         
 146   2                              keyedge|=(keybuf&(~keyedge_old));
 147   2                              keyedge_old=keybuf;
 148   2                              
 149   2                      break;
 150   2              }       
 151   1      }
 152          
 153          
 154          /*----------------------------- Subroutine -------------------------------------
 155                  Name: key_doout
 156              Function: get out key ,and set send flag, clear timer
 157                 Entry: 
 158                  Exit: 
 159               Caution: 
 160          -------------------------------------------------------------------------------*/
 161          void key_out_pro(void){
 162   1      //      unsigned  char i;
 163   1              keyedge&=0x7f;
 164   1              if(keyedge!=0){
 165   2                      fbuzz_en();
 166   2                      comcmd=Write_COM_DATA;  
 167   2                      b_send_fg=1;
 168   2                      b_disp=1;
 169   2                      lcm_md=0x03;            
 170   2      //keyright
 171   2                      if(b_right_fg){
 172   3                              keytabdat=0x04;
 173   3                              comdata&=0xf0;
 174   3                              comdata|=0x04;  
 175   3                      }
 176   2      //keyleft
 177   2                      if(b_left_fg){
 178   3                              keytabdat=0x03;
 179   3                              comdata&=0xf0;
C51 COMPILER V7.50   KEY                                                                   11/15/2007 14:43:53 PAGE 4   

 180   3                              comdata|=0x03;
 181   3                      }
 182   2      //keydown
 183   2                      if(b_down_fg){
 184   3                              keytabdat=0x02;
 185   3                              comdata&=0xf0;
 186   3                              comdata|=0x02;
 187   3                      }
 188   2      //keyup         
 189   2                      if(b_up_fg){  
 190   3                              keytabdat=0x01;
 191   3                              comdata&=0xf0;
 192   3                              comdata|=0x01;
 193   3                      }
 194   2      
 195   2      //keystop
 196   2                      if(b_stop_fg){
 197   3                              keytabdat=0x00;
 198   3                              comdata&=0xf0;
 199   3                      }
 200   2                      
 201   2      //keyon
 202   2                      if(b_on_fg){ 
 203   3                              keytabdat=0x06;
 204   3                              comdata&=0x0f;
 205   3                              comdata|=0x10;
 206   3                      }
 207   2              
 208   2       //keyoff
 209   2                      if(b_off_fg){
 210   3                              keytabdat=0x05; 
 211   3                              comdata&=0x0f;
 212   3                      }
 213   2                                      
 214   2                      keyedge=0x00;
 215   2              }
 216   1      }
 217          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    202    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   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 + -