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

📄 c8051f340.lst

📁 C8051F异步串口操作程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 229          void Init_TTQH6(void)     //初始化器件TTQH6
 230          {
 231   1          TTQH6_RST0 = 0;
 232   1          Delay(1);
 233   1          TTQH6_RST0 = 1;
 234   1          Delay(20);
 235   1      }
 236          //----------------------------------------------------------------------------
 237          
 238          byte Receive_RX0(void)   //串口接收数据
 239          {
C51 COMPILER V8.02   C8051F340                                                             09/12/2007 10:54:10 PAGE 5   

 240   1          byte RX_data;
 241   1            while(RI0==0);
 242   1            RI0=0;
 243   1            RX_data=SBUF0;
 244   1            return (RX_data); 
 245   1      }
 246          
 247          //----------------------------------------------------------------------------  
 248          
 249          /*void Tranfer_TX0(byte TX_data) //串口发送数据
 250          {
 251           
 252              if (TI0)
 253               {  TI0=0;
 254                  SBUF0=TX_data;
 255               }
 256          
 257          } */
 258          //----------------------------------------------------------------------------
 259          //----------------------------------------------------------------------------
 260          
 261          uchar ASC_0(uchar x)
 262          {
 263   1          return(x == '0' ? 1 : 0);
 264   1      }
 265          //----------------------------------------------------------------------------
 266          uchar ASC_0to9(uchar x)
 267          {
 268   1          return(((x < '0') || ('9' < x)) ? 0 : 1);
 269   1      }
 270          //----------------------------------------------------------------------------
 271          uchar ASC_a_to_f(uchar x)
 272          {
 273   1          return(((x < 'a') || ('f' < x)) ? 0 : 1);
 274   1      }
 275          //----------------------------------------------------------------------------
 276          uchar ASC_AtoF(uchar x)
 277          {
 278   1          return(((x < 'A') || ('F' < x)) ? 0 : 1);
 279   1      }
 280          //----------------------------------------------------------------------------
 281          uchar ASC_0to9_A_a_to_F_f(uchar x)
 282          {
 283   1          return((ASC_0to9(x) || ASC_a_to_f(x) || ASC_AtoF(x)) ? 1 : 0);
 284   1      }
 285          //----------------------------------------------------------------------------
 286          uchar EqualSign(uchar x)
 287          {
 288   1          return(x == '=' ? 1 : 0);
 289   1      }
 290          //----------------------------------------------------------------------------
 291          uchar Semicolon(uchar x)
 292          {
 293   1          return(x == ';' ? 1 : 0);
 294   1      }
 295          //----------------------------------------------------------------------------
 296          uchar ASC_R_r(uchar x)
 297          {
 298   1          return(((x == 'R') || (x == 'r')) ? 1 : 0);
 299   1      }
 300          //----------------------------------------------------------------------------
 301          uchar ASC_L_l(uchar x)
C51 COMPILER V8.02   C8051F340                                                             09/12/2007 10:54:10 PAGE 6   

 302          {
 303   1          return(((x == 'L') || (x == 'l')) ? 1 : 0);
 304   1      }
 305          //----------------------------------------------------------------------------
 306          uchar ASC_E_e(uchar x)
 307          {
 308   1          return(((x == 'E') || (x == 'e')) ? 1 : 0);
 309   1      }
 310          //----------------------------------------------------------------------------
 311          uchar ASC_H_h(uchar x)
 312          {
 313   1          return(((x == 'H') || (x == 'h')) ? 1 : 0);
 314   1      }
 315          //----------------------------------------------------------------------------
 316          uchar ASC_X_x(uchar x)
 317          {
 318   1          return(((x == 'X') || (x == 'x')) ? 1 : 0);
 319   1      }
 320          //----------------------------------------------------------------------------
 321          uchar Question_mark(uchar x)
 322          {
 323   1          return((x == '?') ? 1 : 0);
 324   1      }
 325          //----------------------------------------------------------------------------
 326          uchar ASC_P_p(uchar x)
 327          {
 328   1          return(((x == 'P') || (x == 'p')) ? 1 : 0);
 329   1      }
 330          //----------------------------------------------------------------------------
 331          //----------------------------------------------------------------------------
 332          void main(void)
 333          {      
 334   1         uchar i;
 335   1         uchar new_value;
 336   1         uchar temp_addr;
 337   1         uchar temp;
 338   1         byte  r_data;
 339   1         bit   flag=0;  
 340   1      
 341   1              Init_Device();
 342   1              Init_TTQH6(); 
 343   1              TI0=1;            // TI:   set TI to send first char of UART !!!!!!!!!!!
 344   1          while(1)
 345   1              {
 346   2      //---------------------------------------------------------------------------
 347   2      
 348   2                
 349   2            r_data=Receive_RX0();
 350   2      
 351   2                if( ASC_H_h(r_data) )         //输入HELP,输出寄存器默认详单
 352   2                   { 
 353   3                            r_data=Receive_RX0();
 354   3                         if(ASC_E_e(r_data))
 355   3                          { 
 356   4      
 357   4                                 if (ASC_L_l(r_data))
 358   4                                       {
 359   5                                                r_data=Receive_RX0();
 360   5                                         if (ASC_P_p(r_data)) 
 361   5                                           
 362   5                                               {
 363   6                                                  for (i=0; i<(sizeof(CmdListReg)/sizeof(TTQH6_PARAMETER)); i++)
C51 COMPILER V8.02   C8051F340                                                             09/12/2007 10:54:10 PAGE 7   

 364   6                                   {
 365   7                                          printf("R%03X,初始值%03X\n", CmdListReg[i].Parameter_ID,CmdListReg[i].
             -Init_Value);
 366   7                                          printf(CmdListReg[i].s);
 367   7                                          printf("\n");
 368   7                                          printf("\n");
 369   7                                    }
 370   6          
 371   6                                printf("\n");
 372   6                                printf("更改:R___=0x______; 注意命令串后以分号结束\n");
 373   6                                printf("读出:R___=? \n");
 374   6                                printf("发送help,获得帮助\n");
 375   6                               
 376   6                            }
 377   5                                      else flag=1;
 378   5      
 379   5                                       }
 380   4                                else flag=1;
 381   4      
 382   4                       }
 383   3      
 384   3                        else flag=1;
 385   3                       }
 386   2            //---------------------------------------------------------------------
 387   2                else if (ASC_R_r(r_data))      
 388   2                                                
 389   2                                   {
 390   3                                           temp_addr=Receive_RX0();
 391   3                                               if (ASC_0to9_A_a_to_F_f(temp_addr))
 392   3                                              {
 393   4                                                              if (EqualSign(Receive_RX0()))
 394   4                                                                 {
 395   5                                                                    temp=Receive_RX0();
 396   5                                        if (Question_mark(temp))       //寄存器查询,输入R___=?输出寄存器的值
 397   5                                                                           {
 398   6                                                                                 printf("R%03X=%05X\n", temp_addr, Read_TTQH6(temp_addr));//读寄存器
 399   6      
 400   6                                                                                }
 401   5                                                                      //-------------------------------------------
 402   5                                                                        else   if  (ASC_0(temp))                         //更改寄存器的值
 403   5                                                                                   {
 404   6                                                                                              if (ASC_X_x(Receive_RX0()))
 405   6                                                                                                 {
 406   7                                                                                                       new_value=Receive_RX0();
 407   7      
 408   7                                                                                                        if (ASC_0to9_A_a_to_F_f(new_value))
 409   7                                                                                                            {
 410   8                                                                                                                  if (Semicolon(Receive_RX0()))
 411   8                                                                                                                        {
 412   9                                                                                                                               Write_TTQH6(temp_addr,new_value);//写寄存器
 413   9                                                                                                       printf("修改成功");
 414   9                                                                                                                     }
 415   8                                                                                                                  else flag=1;
 416   8                                                                                                                }
 417   7                                                                                                        else flag=1;
 418   7                                                                                                 }
 419   6                                                                                          else flag=1;
 420   6                                                                                        }
 421   5                                                                       else flag=1;
 422   5                                                                               
 423   5                                                              //------------------------------------------
 424   5                                                                  }
C51 COMPILER V8.02   C8051F340                                                             09/12/2007 10:54:10 PAGE 8   

 425   4                                                  else flag=1;
 426   4                                              }
 427   3                                      else flag=1;
 428   3                               }
 429   2      
 430   2            //---------------------------------------------------------------------
 431   2           else flag=1;               
 432   2                               
 433   2               if (flag==1)       
 434   2              { 
 435   3                              flag=0;
 436   3                      printf("输入格式错误,请重新输入,发送help,获得帮助\n");
 437   3                              
 438   3                       }
 439   2      
 440   2      
 441   2                              
 442   2               }
 443   1      
 444   1      }
 445          
 446          //----------------------------------------------------------------------------
 447          ///////////////////////////////// OVER ///////////////////////////////////////
 448          //----------------------------------------------------------------------------
 449          /*****************************************************************************/


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


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

⌨️ 快捷键说明

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