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

📄 zls_001.lst

📁 我做的按摸椅RS001的键盘部分的C51程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   ZLS_001                                                               05/27/2004 22:22:57 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE ZLS_001
OBJECT MODULE PLACED IN F:\ZLS_001\ZLS_001.OBJ
COMPILER INVOKED BY: d:\lope\kc51\bin\c51.exe F:\ZLS_001\ZLS_001.C SMALL OT(0,SIZE) SB OR DB OE

stmt level    source

*** WARNING C500 IN LINE 1 OF F:\ZLS_001\ZLS_001.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
   1          
   2          #include <reg52.h>
   3          #include<intrins.h>
   4          bit  free;
   5          bit  keydown;
   6          sbit MAX =P1^0;
   7          sbit MID =P0^1;
   8          sbit MIN =P0^2;
   9          sbit CS  =P0^3;
  10          sbit CLK =P0^4;
  11          sbit DATA=P0^5;
  12          sbit WARN=P0^6;
  13          sbit ZERO=P0^7;//过零检测脚
  14          /*键盘扫描端口*/
  15          sbit D0 =P3^0;//行扫描线
  16          sbit D1 =P3^1;
  17          sbit D2 =P3^2;
  18          sbit D3 =P3^3;
  19          sbit D4 =P3^4;
  20          sbit CS0=P3^5;//列扫描线
  21          sbit CS1=P3^6;
  22          sbit CS2=P3^7;
  23          /*检测/控制端口*/
  24          sbit REL_UPDW=P2^0;
  25          sbit REL_C   =P2^1;
  26          sbit P_UPDW  =P2^2;
  27          sbit TRI_C   =P2^3;
  28          sbit WDI     =P2^4;
  29          sbit Q_DW    =P2^5;
  30          sbit Q_UP    =P2^6;
  31          sbit T_UPDW  =P2^7;
  32          
  33          sbit  PD     =P0^0;
  34          sbit  PC     =P0^1;
  35          sbit  PB     =P0^2;
  36          sbit  PA     =P0^3;
  37          sbit  XXC    =P0^4;
  38          sbit  SXC    =P0^5;
  39          sbit  TT1    =P0^6;
  40          sbit  TT2    =P0^7;
  41          unsigned char key;
  42          unsigned char keynumber;
  43          
  44          #define NOP()  _nop_()
  45                                                                                                                    
             -                                                                                                                        
             -                                                        
  46           
  47           void processknock();
  48           void whith();
  49           void top();
  50           void vibrasion();
  51           void roll();
  52           void mode();
C51 COMPILER V7.07   ZLS_001                                                               05/27/2004 22:22:57 PAGE 2   

  53           void fixposition();
  54           void bottom();
  55           void strength();
  56           void speed();
  57           void power();
  58           void timer();
  59           void fullautomatic();
  60           void rising();
  61           void descent();
  62           void(*pfunction)();     //------------函数指针
  63          
  64           void(*code tab[])()={  processknock, whith, top, vibrasion, roll,
  65                                  mode, fixposition,bottom,strength,  speed,
  66                                      power,timer,fullautomatic, rising, descent
  67                                                                                       };//------------函数数组
  68          /*----------------------------WATCHDOG-------------------------------------------------------*/
  69          void watchdog()
  70          {
  71   1        WDI=0;
  72   1        NOP();NOP();
  73   1        WDI=1;
  74   1        NOP();NOP();
  75   1        WDI=0;
  76   1      }
  77          /*-----------------------------------delay()-------------------------*/
  78          void delay(unsigned char m,unsigned char n)
  79          {
  80   1        unsigned char i,j;
  81   1        watchdog();
  82   1        for(i=0;i<m;i++)
  83   1        { for(j=0;j<n;j++);}
  84   1      }
  85          
  86          /*-------------------------Key Scan  Procedure-----------------------*/
  87          unsigned char keyscan()
  88           {
  89   1        unsigned char scancode;
  90   1        unsigned char keycode;
  91   1        P3=0xff;                  //初始化
  92   1        scancode=0xdf;        //置扫描码
  93   1        while(scancode!=0xff)
  94   1          {
  95   2                 P3 =scancode;              //输入扫描码 ,扫描CS0列
  96   2                 keycode =P3;               //读键值
  97   2                 if((keycode&0x1f)!=0x1f)
  98   2                 delay(10,10);
  99   2                 if((keycode&0x1f)!=0x1f) //去抖
 100   2                 { 
 101   3                 free=1;keydown=1;
 102   3                 keynumber=keycode;//扫描到按下的键,退出扫描
 103   3                   break;
 104   3                 }                                     
 105   2                 scancode=(keycode<<1)|0x1f;  //更新扫描码,左移一位
 106   2               
 107   2          }
 108   1              
 109   1        while((P3&0x1f)!=0x1f)//等待按键释放
 110   1            {
 111   2              TR0=1;
 112   2              while(!TF0);        //50ms定时       
 113   2              TR0=0;
 114   2              TH0=0XA5;TL0=0X67;
C51 COMPILER V7.07   ZLS_001                                                               05/27/2004 22:22:57 PAGE 3   

 115   2              break;              //超过50MS为连续键
 116   2            }
 117   1        if((P3&0x1f)==0x1f)delay(2,10);
 118   1        if((P3&0x1f)==0x1f)    //键释放及按下标志,按下为1,释放为0   
 119   1           {
 120   2            free=0;keydown=0;
 121   2           }
 122   1      
 123   1        keynumber=~keynumber;//键值取反,获取简明的最终键码值 
 124   1        switch(keynumber)
 125   1          {
 126   2                case 0x21 :NOP();
 127   2                          return (key=0);      //揉捏/敲打
 128   2                                      break;
 129   2                case 0x22 :NOP();
 130   2                          return(key=1);       //宽度调节
 131   2                                      break;
 132   2                case 0x24 :NOP();
 133   2                          return(key=2);    //上
 134   2                                      break;
 135   2                case 0x28 :NOP();
 136   2                          return(key=3);       //捶击开关
 137   2                                      break;
 138   2                case 0x30 :NOP();
 139   2                          return(key=4);       //滚压
 140   2                                      break;
 141   2                case 0x41 :NOP();
 142   2                          return(key=5);       //模式
 143   2                                      break;
 144   2                case 0x42 :NOP();
 145   2                          return(key=6);    //定位
 146   2                                      break;
 147   2                case 0x44 :NOP();
 148   2                          return(key=7);       //下
 149   2                                      break;
 150   2                case 0x48 :NOP();
 151   2                              return(key=8);   //强度
 152   2                                      break;
 153   2                case 0x50 :NOP();
 154   2                          return(key=9);       //速度
 155   2                                      break;
 156   2                case 0x81 :NOP();
 157   2                          return(key=10);      //总开关
 158   2                                      break;
 159   2                case 0x82 :NOP();
 160   2                     
 161   2                          return(key=11);      //定时
 162   2                                      break;
 163   2      
 164   2                case 0x84 :NOP();
 165   2                          return(key=12);      //全?
 166   2                                      break;
 167   2                case 0x88 :NOP();
 168   2                          return(key=13);      //上升
 169   2                                      break;
 170   2                    
 171   2            case 0x90:NOP();
 172   2                          return(key=14);    //下降
 173   2                                      break;
 174   2                default:NOP();
 175   2                          return(key=16);
 176   2                          break;
C51 COMPILER V7.07   ZLS_001                                                               05/27/2004 22:22:57 PAGE 4   

 177   2               }
 178   1      }
 179          /*-----------------取函数--------------------------------*/
 180          void takefunc()
 181          {
 182   1        pfunction=tab[key];
 183   1        if(key!=16)
 184   1        (*pfunction)();

⌨️ 快捷键说明

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