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

📄 keyscan.lst

📁 LCD显示电子计价秤方案 1. 该方案使用的传感器为20KG,灵敏度约为0.5mv/v,选用新传感器线性较好的一段(100g-15Kg),直接处理,没有做非线性修正,称重可能会有偏差. 2. 软件
💻 LST
字号:
C51 COMPILER V8.05a   KEYSCAN                                                              05/17/2008 09:11:46 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<def.h>
   2          #if board==finishboard
                      #define  SCANPORT       P2
                      uint bdata      keyres;
                      sbit key_0=keyres^0;    
                      sbit key_1=keyres^1;
                      sbit key_2=keyres^2;
                      sbit key_3=keyres^3;
                      sbit key_4=keyres^4;
                      sbit key_5=keyres^5;
                      sbit key_6=keyres^6;
                      sbit key_7=keyres^7;
                      sbit key_8=keyres^8;
                      sbit key_9=keyres^9;
                      sbit key_point=keyres^10;
                      sbit key_flay =keyres^11;
                      sbit key_clear=keyres^12;
                      sbit key_store=keyres^13;
                      sbit key_add  =keyres^14;
                      sbit key_cladd=keyres^15;
                      /*
                      uint bdata keystatus;
                      sbit s_0=keystatus^0;
                      sbit s_1=keystatus^1;
                      sbit s_2=keystatus^2;
                      sbit s_3=keystatus^3;
                      sbit s_4=keystatus^4;
                      sbit s_5=keystatus^5;
                      sbit s_6=keystatus^6;
                      sbit s_7=keystatus^7;
                      sbit s_8=keystatus^8;
                      sbit s_9=keystatus^9;
                      sbit s_point=keystatus^10;
                      sbit s_flay =keystatus^11;
                      sbit s_clear=keystatus^12;
                      sbit s_store=keystatus^13;
                      sbit s_add  =keystatus^14;
                      sbit s_cladd=keystatus^15;
                      */
                      uchar   bdata   keyres_long;
                      sbit    key_point_long=keyres_long^0;   //point长按
                      sbit    key_store_long=keyres_long^1;   //存储长按 
                      uchar   store_cyc;
                      uchar   point_cyc;
                      //----------------------------------------按键扫描程序--------------------------------------------
                      uint key_mcu()
                      {
                              uchar i;
                              uint    keystatusl;
                              keystatusl=0;
                              //利用P2口做键盘扫描
                          SCANPORT=0Xfe;      //初始状态    
                          for(i=0;i<4;i++)
                              {               
                                      switch(SCANPORT)
C51 COMPILER V8.05a   KEYSCAN                                                              05/17/2008 09:11:46 PAGE 2   

                                      {
                                              case 0xee:keystatusl=0x0001;break;      //0      
                                          case 0xde:keystatusl=0x0002;break;  //1 
                                              case 0xbe:keystatusl=0x0004;break;      //2 
                                              case 0x7e:keystatusl=0x0008;break;      //3
                                              case 0xed:keystatusl=0x0010;break;      //4 
                                      case 0xdd:keystatusl=0x0020;break;      //5 
                                              case 0xbd:keystatusl=0x0040;break;      //6 
                                              case 0x7d:keystatusl=0x0080;break;      //7
                                              case 0xeb:keystatusl=0x0100;break;      //8 
                                          case 0xdb:keystatusl=0x0200;break;  //9 
                                              case 0xbb:keystatusl=0x0400;break;      //point 
                                              case 0x7b:keystatusl=0x0800;break;      //flay
                                              case 0xe7:keystatusl=0x1000;break;      //clear 
                                          case 0xd7:keystatusl=0x2000;break;  //store 
                                              case 0xb7:keystatusl=0x4000;break;      //add 
                                              case 0x77:keystatusl=0x8000;break;      //clear 
                                              default:keystatusl=0x0000;              //无按键按下
                                      }
                                      SCANPORT<<=1;
                                      SCANPORT|=0x01;         
                              }
                              return (keystatusl);
                      }
                      void key_ser()
                      {
                              //利用TM1629按键扫描
                              
                      }
                      void key_scan()
                      {       
                              uint    temp16,keystatus;
                              uchar   numres=0;
                              keyres=0;
                              keyres_long=0;
                      
                              if(keybit==0)
                              {
                                      if(keystatus!=0x0000)
                                      {
                                              //前一次有按键按下
                                              temp16=key_mcu();
                                              if(((temp16&0x0400)==0x0400)&&((keystatus&0x0400)==0x0400))
                                              {
                                                      point_cyc++;
                                                      if(point_cyc>200)
                                                      {
                                                              point_cyc=0;
                                                              key_point_long=1;       //point长按
                                                      }
                                              }
                                              if(((temp16&0x2000)==0x2000)&&((keystatus&0x2000)==0x2000))
                                              {
                                                      store_cyc++;
                                                      if(store_cyc>200)
                                                      {
                                                              store_cyc=0;
                                                              key_store_long=1;       //store长按
                                                      }
                                              }
                                              keyres=0;
                                              temp16=(~temp16)&keystatus;
C51 COMPILER V8.05a   KEYSCAN                                                              05/17/2008 09:11:46 PAGE 3   

                                              switch(temp16)
                                              {
                                                      case 0x0001:key_0=1;
                                                                              numres=0;
                                                                              break;
                                                      case 0x0002:key_1=1;
                                                                              numres=1;
                                                                              break;
                                                      case 0x0004:key_2=1;
                                                                              numres=2;
                                                                              break;
                                                      case 0x0008:key_3=1;
                                                                              numres=3;
                                                                              break;
                                                      case 0x0010:key_4=1;
                                                                              numres=4;
                                                                              break;
                                                      case 0x0020:key_5=1;
                                                                              numres=5;
                                                                              break;
                                                      case 0x0040:key_6=1;
                                                                              numres=6;
                                                                              break;
                                                      case 0x0080:key_7=1;
                                                                              numres=7;
                                                                              break;
                                                      case 0x0100:key_8=1;
                                                                              numres=8;
                                                                              break;
                                                      case 0x0200:key_9=1;
                                                                              numres=9;
                                                                              break;
                                                      case 0x0400:key_point=1;
                                                                              numres=10;
                                                                              break;
                                                      case 0x0800:key_flay =1;break;
                                                      case 0x1000:key_clear=1;break;
                                                      case 0x2000:key_store=1;break;
                                                      case 0x4000:key_add  =1;break;
                                                      case 0x8000:key_cladd=1;break;
                                                      default:keyres=0;
                                              }
                                              /*
                                              //更新数字的值
                                              if((temp16&0x07ff)!=0)
                                              {
                                                      num[5]=num[4];
                                                      num[4]=num[3];
                                                      num[3]=num[2];
                                                      num[2]=num[1];
                                                      num[1]=num[0];
                                                      num[0]=numres;
                                              }
                                              */
                                              temp16=0;
                                          keystatus=0;
                                              numres=0;
                                      }
                                      else
                                      {
                                         keystatus=key_mcu(); //无按键按下则直接调用单片机扫描键盘
                                      }                           
C51 COMPILER V8.05a   KEYSCAN                                                              05/17/2008 09:11:46 PAGE 4   

                              }
                              else
                              {
                                      key_ser();      //调用串行扫描
                              }
                      }
              #endif


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