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

📄 usb118_c51.lst

📁 51单片机USB通信模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
 203   1              TXD_Int(SetFilePointer);                                //移动文件指针
 204   1      
 205   1              if(Receive_Data(0x25,0)==0)                             //命令是否成功执行,是则继续执行
 206   1              {                                                                               //否则重新执行
 207   2                      delay_xms(1000);
 208   2                      goto sfp;
 209   2              }
 210   1              delay_xms(500);
 211   1      
 212   1      wrt2:                                                                           //二次写文件
 213   1              TXD_Int(Write);
 214   1              for(i=0;i<5;i++)
 215   1                      TXD_Int(Date2);
 216   1              
 217   1              if(Receive_Data(0x0c,0)==0)                             //命令是否成功执行,是则继续执行
 218   1              {                                                                               //否则重新执行
 219   2                      delay_xms(1000);
 220   2                      goto wrt2;
 221   2              }
 222   1      
 223   1      
 224   1              while(1);                                                               //循环等待
 225   1      }
 226          /********************************************************************
 227                                          CoM口波特率初始化函数 
 228          原型:init_com(); 
 229          功能:初始化com口
 230          入口参数:无 
 231          出口参数:无 
 232          ********************************************************************/ 
 233          void init_com( )
 234          {
 235   1      
 236   1      //      SCON = 0x50; //串口方式1,允许接收
 237   1      //      TMOD = 0x20; //定时器1 定时方式2
 238   1      //      TCON = 0x40; //设定时器1 开始计数
 239   1      //      PCON = 0x80;
 240   1      //      TH1 = 0xf3; //24MHz 9600 波特率
 241   1      //      TL1 = 0xf3;
C51 COMPILER V7.50   USB118_C51                                                            08/08/2007 09:14:41 PAGE 5   

 242   1      
 243   1      
 244   1              SCON = 0x53;
 245   1              PCON = 0x80 | PCON;
 246   1              T2CON = 0x30;
 247   1      
 248   1      //      RCAP2H = 0xFF;  // 9600 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))          
 249   1      //      RCAP2L = 0xB2;
 250   1      
 251   1      //      RCAP2H = 0xFF;  // 19200 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L))) 
 252   1      //      RCAP2L = 0xD9;
 253   1      
 254   1              RCAP2H = 0xFF;  // 57600 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L))) 
 255   1              RCAP2L = 0xF3;
 256   1              TI = 1;
 257   1              TR2 = 1;
 258   1      
 259   1      }
 260          /********************************************************************
 261                                   测试系统
 262          功能:使发光二极管闪烁
 263          入口参数:无
 264          出口参数: 无
 265          ********************************************************************/
 266          void test( )
 267          {
 268   1              int a=0;
 269   1              P3 = 0xff;                                                      //P3口初始化,使发光二极管熄灭  
 270   1              while(a<10)
 271   1              {       
 272   2                      P3_3 = ~P3_3;                                   //P3.3取反
 273   2                      P3_5 = ~P3_5;
 274   2                      delay_xms(500);                                 //延时0.5秒
 275   2                      a++;
 276   2              }
 277   1              P3 = 0xff;
 278   1      }
 279          
 280          /********************************************************************
 281                                                          延时函数
 282          功能:共延时1ms乘以delay_time
 283          入口参数:延时delay_time ms
 284          出口参数:无
 285          ********************************************************************/
 286          void delay_xms(unsigned int delay_time)
 287          {
 288   1              unsigned int i,j;
 289   1      
 290   1              for(i = 0; i < delay_time; i++)
 291   1              {
 292   2                      for(j = 0; j < 250; j++); 
 293   2              }
 294   1      }
 295          /********************************************************************
 296                                 发送一帧数据函数
 297          功能:发送一帧数据
 298          入口参数:命令帧首地址,数据个数
 299          出口参数:无
 300          ********************************************************************/
 301          void TXD_Int(uchar *s)
 302          {
 303   1               char i;                 
C51 COMPILER V7.50   USB118_C51                                                            08/08/2007 09:14:41 PAGE 6   

 304   1                       TI = 0;                 
 305   1                       for(i=0; i<66; i++)           //发送64个参数  
 306   1        //     {
 307   1      //                      if(i==7)
 308   1      //                              Send_Data(num); 
 309   1      //                      else
 310   1                     Send_Data(*(s+i)); 
 311   1        //             }
 312   1                       RI = 0;
 313   1                       TI = 0;                      //一帧发送完毕
 314   1      
 315   1      }
 316          /********************************************************************
 317                                串口发送一个字节
 318          功能:发送一个字节数据
 319          入口参数:发送数据
 320          出口参数:无
 321          ********************************************************************/
 322          void Send_Data(uchar Serial_data)
 323          {
 324   1              SBUF = Serial_data;                             //发送一个字节
 325   1              while(!TI);                                             //等待发送
 326   1              TI = 0;                                 
 327   1      }
 328          /********************************************************************
 329                                   接收应答信号和数据函数
 330          功能:接收一个字节通讯
 331          入口参数:无
 332          出口参数:返回接收值
 333          ********************************************************************/
 334          bit Receive_Data(uchar  rxd,uint num)
 335          {
 336   1              int i;
 337   1              REN = 1;                                                //接收位打开
 338   1              P3_3 = 1;
 339   1              P3_5 = 1;
 340   1              if(Receive_One()== rxd)                 //接收的是否是应答码
 341   1              {
 342   2                      if(Receive_One() == 0x01)       //是应答码,是否是成功执行
 343   2                      {
 344   3                      
 345   3                              for(i=0;i<62;i++)               //成功执行,接收62个保留位
 346   3                              {
 347   4                                      Receive_One();
 348   4                              }
 349   3                              P3_3 = 0;                               //指示灯亮
 350   3                              P3_5 = 0;
 351   3                              if(num!=0)                              //是否有数据,有则跳接收部分
 352   3                                      goto rev;
 353   3                              else return(1);                 //无,返回1
 354   3                       }
 355   2                       else                                           //未成功执行
 356   2                       {
 357   3                              for(i=0;i<62;i++)               //接收62个保留位
 358   3                              {
 359   4                                      Receive_One();
 360   4                              }
 361   3                              P3_3 = 1;
 362   3                              P3_5 = 0;
 363   3                              return(0);                              //返回0
 364   3                        }
 365   2              }
C51 COMPILER V7.50   USB118_C51                                                            08/08/2007 09:14:41 PAGE 7   

 366   1              else                                                    //收到的不是应答码
 367   1              {
 368   2                      for(i=0;i<63;i++)                       //接收剩下的63个字节
 369   2                      {
 370   3                              Receive_One();
 371   3                      }
 372   2                      P3_3 = 1;
 373   2                      P3_5 = 0;
 374   2                      return(0);                                      //返回0
 375   2               }
 376   1      
 377   1      rev:
 378   1              if(num>0)                                               //应答信号后有数据
 379   1              {
 380   2                      for(i=0;i<num;i++)                      //接收数据
 381   2                              Receive_One();
 382   2              }
 383   1              REN = 0;                                                //关闭接收位
 384   1              return(1);                                              //返回1
 385   1      }
 386          /********************************************************************
 387                                   接收一个字节通讯函数
 388          功能:接收一个字节通讯
 389          入口参数:无
 390          出口参数:返回接收值
 391          ********************************************************************/
 392          uchar Receive_One(void)
 393          {
 394   1              while(!RI);                                     //等待接收
 395   1              RI = 0;
 396   1              return(SBUF);                           //将接收数据返回
 397   1      }
 398          


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