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

📄 zls_0001.lst

📁 我做的按摸椅RS001的键盘部分的C51程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 188          
 189          void main()
 190          {                
 191   1        watchdog();
 192   1        TMOD=0X01;
 193   1        TH0=0XA5;
 194   1        TL0=0X67;
 195   1        TF0=0;
 196   1        SP=0x55;
 197   1      
 198   1        takefunc();
 199   1        
 200   1      }
 201          
 202          /*------------------------------------------------------------------*/
 203          void rising()
 204          { 
 205   1      
 206   1           
 207   1           REL_C=0;
 208   1           delay(30,255);
 209   1           REL_C=1;
 210   1           delay(30,255);
 211   1           if(keydown&&(key!=13))
 212   1           takefunc();
 213   1           //if(key==2|key==7)break;
 214   1        
 215   1       
 216   1      }
 217          /*-------------------------------------------------------------------*/
 218          void descent()
 219          { 
 220   1        TRI_C=0;
 221   1        REL_C=0;
 222   1        delay(65,255);
 223   1        REL_C=1;
 224   1        delay(65,255);
 225   1      }
 226          /*-----------------------------------------------------------------*/
 227          void bottom()
 228          {
 229   1            Q_UP=1;
 230   1            Q_DW=1;
 231   1            REL_UPDW=0;
 232   1            keyscan();
*** WARNING C206 IN LINE 232 OF ZLS_0001.C: 'keyscan': missing function-prototype
 233   1            if(free&(!Q_DW))
 234   1             {
 235   2              T_UPDW=0;
 236   2              return;
C51 COMPILER V7.10   ZLS_0001                                                              07/04/2004 13:24:11 PAGE 5   

 237   2                      
 238   2             }
 239   1            NOP();NOP();
 240   1            REL_UPDW=1;
 241   1      
 242   1      }
 243          /*----------------------------------------------------------------*/
 244          void top()
 245          {
 246   1           Q_UP=1;
 247   1           Q_DW=1;
 248   1           REL_UPDW=1;
 249   1           keyscan();
 250   1           if(free&(!Q_UP))
 251   1            {
 252   2              T_UPDW=0; 
 253   2              return;
 254   2                      
 255   2            }
 256   1           NOP();
 257   1           NOP();
 258   1           REL_UPDW=0;
 259   1      
 260   1       
 261   1      }    
 262          
 263          /*----------------------串口中断接收----------------------------------*/
 264          
 265          void slave(void) interrupt 4 using 1
 266          {
 267   1        void str(void);
 268   1        void sre(void);
 269   1        uchar a;
 270   1        RI=0;                                                 //关串行口中断
 271   1        ES=0;
 272   1        if(SBUF!=SLAVE){ES=1;goto reti;}              //非本机地址,继续监听
 273   1        SM2=0;                                                        //取笑监听状态
 274   1      SBUF=SLAVE;                                     //发回从机地址
 275   1      while(TI!=1);TI=0;
 276   1      while(RI!=1);RI=0;
 277   1      if(RB8==1){SM2=1;ES=1;goto reti;}               //确认地址不符,从机复位
 278   1      a=SBUF;                                         //接收命令
 279   1      if(a==1){                                               //从机接收主机的数据
 280   2      if(rrdy==1) SBUF=0x01;                  //接收准备好,发回0x01
 281   2      else
 282   2      SBUF=0x00;
 283   2      while(TI!=1);TI=0;
 284   2      while(RI!=1);RI=0;
 285   2      if(RB8==1){SM2=1;ES=1;goto reti;}
 286   2      sre();                                          //接收数据
 287   2      }
 288   1      else
 289   1      {
 290   2      if(a==0x02)                                     //从机向主机发送数据
 291   2      {
 292   3      if(trdy==1) SBUF=0x02;          //发送准备好
 293   3      else
 294   3      SBUF=0x00;
 295   3      while(TI!=1);TI=0;
 296   3      while(RI!=1);RI=0;
 297   3      if(RB8==1){SM2=1;ES=1;goto reti;}
 298   3      str( );                                 //发送数据
C51 COMPILER V7.10   ZLS_0001                                                              07/04/2004 13:24:11 PAGE 6   

 299   3      }
 300   2      else
 301   2      {
 302   3      SBUF=0x80;                              //命令非法
 303   3      while(TI!=1);TI=0;
 304   3      SM2=1;ES=1;                             //恢复监听
 305   3      }
 306   2      }
 307   1      reti:;
 308   1      }
 309          
 310          void str(void)                                          //发送数据函数
 311          {uchar p,i;
 312   1       trdy=0;
 313   1       do{p=0;                                                        //初始校验和为0
 314   2          for(i=0;i<BN;i++)
 315   2           {SBUF=tdata[i];                                    //发送数据
 316   3            p+=tdata[i];
 317   3            while(TI!=1);TI=0;
 318   3           }
 319   2        SBUF=p;                                               //发送校验和
 320   2      while(TI!=1);TI=0;
 321   2      while(RI!=1);RI=0;
 322   2      }while(SBUF!=0);                                        //主机接收不正确,重新发送
 323   1      SM2=1;ES=1;
 324   1      }
 325          
 326          void sre(void)                                          //接收数据函数
 327          {uchar p,i;
 328   1       rrdy=0;
 329   1       while(1)
 330   1      {p=0;                                                           //初始化校验和为0
 331   2         for(i=0;i<BN;i++)
 332   2      {while(RI!=1);RI=0;
 333   3         tdata[i]=SBUF;                                       //接收数据
 334   3         p+=rdata[i];
 335   3        }
 336   2        while(RI!=1);RI=0;
 337   2      if(SBUF==p){SBUF=0x00;break;}           //校验和相同,发00H
 338   2      else{
 339   3      SBUF=0xFF;while(TI!=1);TI=0;            //校验和不同,发FFH,重新接收
 340   3       }
 341   2      }
 342   1      SM2=1;ES=1;
 343   1      }
 344          
 345          
 346          
 347          
 348          
 349          
 350          
 351          
 352          
 353          
 354          
 355          
 356          
 357          
 358          
 359          
 360          
C51 COMPILER V7.10   ZLS_0001                                                              07/04/2004 13:24:11 PAGE 7   

 361          
 362          
 363          
 364          
 365          
 366          
 367          
 368          
 369          
 370          
 371          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    612    ----
   CONSTANT SIZE    =     45    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       9
   IDATA SIZE       =     32    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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