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

📄 uart.lst

📁 ucos系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 217          * 输入参数:none;
 218          *
 219          * 返回数据:SBUF0: unsigned char, 一个字节;
 220          *
 221          * 注意: 接收完数据要清除中断标志;
 222          ************************************************************************************/
 223          unsigned char Uart0_ReceiveData(void)
 224          {
 225   1              while(!RI);             // Wait receive data finished
 226   1              RI=0;                           // Clear RI0 Flag
 227   1      
 228   1              return SBUF;
 229   1      }
 230          
 231          
 232          
 233          
 234          
 235          /************************************************************************************
 236          *  Uart1 功能子程序
 237          *************************************************************************************/
 238          
 239          /***********************************************************************************
 240          * 函数名称:uart1_init;
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 5   

 241          *
 242          * 函数功能描述:uart1 初始化函数,使用定时器4作为时钟,关闭了发送和接收中断;
 243          *              
 244          * 输入参数:BaudRate: byte, 波特率变量,可选择以下波特率:
 245          *                       BaudRate_1200,BaudRate_2400,BaudRate_4800,BaudRate_4800,BaudRate_9600;
 246          *                               BaudRate_19200,BaudRate_38400,BaudRate_57600,BaudRate_115200;
 247          *
 248          * 返回数据:none;
 249          *
 250          * 注意: 定时器4资源被占用,SYSCLK = 22.1184Mhz;
 251          ************************************************************************************/
 252          void Uart1_Init(INT32U BaudRate)                           // Init Uart0                        
 253                  
 254          {   
 255   1               T4CON&=~0x04;                  // Close Timer4
 256   1               EIE2&=~0x04;                   // Disable Timer4 interrupt 
 257   1               EIP2&=~0x04;                   // Disable Timer4 interrupt Priority
 258   1               
 259   1               T4CON=0x30;                            // Mode 2: TX,RX Raut Rate Mode
 260   1               
 261   1               PCON|=0x10;                    // Power Control Registe, SMOD=1,BaudRate       
 262   1               SCON1=0x52;                            // SCON0: mode 1, 8-bit UART, enable RX, TI1=1,RI1=0
 263   1              
 264   1               CKCON |= 0x40;             // Uart1 uses SYSCLK/2 as time base
 265   1               
 266   1               RCAP4H =(65536-(SYSCLK/(BaudRate*32)))/256;
 267   1               RCAP4L =(65536-(SYSCLK/(BaudRate*32)))%256;     // set Timer4 reload value for baudrate, Uart1_CLK=SYSCL
             -K/2
 268   1              
 269   1              
 270   1      
 271   1              EIE2&=~0x40;            // Disable Uart1 Interrupt 
 272   1              EIP2&=~0x40;            // Disable Uart1 Interrupt Priority 
 273   1              
 274   1          T4CON|=0x04;                // Enable Uart1
 275   1      
 276   1      }
 277          
 278          
 279          
 280          /***********************************************************************************
 281          * 函数名称:Uart1_ChangeBaudRate;
 282          *
 283          * 函数功能描述:重新设置uart1波特率;
 284          *              
 285          * 输入参数:BaudRate: byte, 波特率变量,可选择以下波特率:
 286          *                       BaudRate_1200,BaudRate_2400,BaudRate_4800,BaudRate_4800,BaudRate_9600;
 287          *                               BaudRate_19200,BaudRate_38400,BaudRate_57600,BaudRate_115200;
 288          *
 289          * 返回数据:none;
 290          *
 291          * 注意: 定时器4资源被占用,SYSCLK = 22.1184Mhz;
 292          ************************************************************************************/
 293          void Uart1_ChangeBaudRate(INT32U BaudRate)
 294          {
 295   1              
 296   1              T4CON&=~0x04;                                                                   // Close Timer4
 297   1              RCAP4H =(65536-(SYSCLK/(BaudRate*32)))/256;
 298   1              RCAP4L =(65536-(SYSCLK/(BaudRate*32)))%256;    // set Timer4 reload value for baudrate, Uart1_CLK=SYSCLK/
             -2
 299   1              
 300   1      
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 6   

 301   1          T4CON|=0x04;                                                                        // Enable Uart1
 302   1      }
 303          
 304          /***********************************************************************************
 305          * 函数名称:Uart1_Enable;
 306          *
 307          * 函数功能描述:uart1使能函数,打开或关闭uart0;
 308          *              
 309          * 输入参数:Flag: bool, uart1使能变量; 
 310          *                       Flag: true,打开uart1;  Flag: false,关闭uart1;
 311          *
 312          * 返回数据:none;
 313          *
 314          * 注意: none;
 315          ************************************************************************************/
 316          void Uart1_Enable(bool Flag)
 317          {
 318   1              if (Flag)
 319   1                      T4CON|=0x04;     // Enable Uart1
 320   1              else
 321   1              T4CON&=~0x04;    // Disable Uart1
 322   1      }
 323          
 324          /***********************************************************************************
 325          * 函数名称:Uart1_ISR_Enable;
 326          *
 327          * 函数功能描述:uart1中断使能函数;
 328          *              
 329          * 输入参数:Flag: bool, uart1中断使能变量; 
 330          *                       Flag: true,允许uart1中断;  Flag: false,关闭uart1中断;
 331          *
 332          * 返回数据:none;
 333          *
 334          * 注意: none;
 335          ************************************************************************************/
 336          void Uart1_ISR_Enable(bool Flag)
 337          {
 338   1      
 339   1              if (Flag)
 340   1                      EIE2|=0x40;    // Enable Uart1 Interrupt 
 341   1              else
 342   1              EIE2&=~0x40;   // Disable Uart1 Interrupt 
 343   1      
 344   1      }
 345          
 346          
 347          /***********************************************************************************
 348          * 函数名称:Uart1_ISR;
 349          *
 350          * 函数功能描述:uart1中断函数;
 351          *              
 352          * 输入参数:none;
 353          *
 354          * 返回数据:none;
 355          *
 356          * 注意: 在中断程序内处理尽可能少的事情;
 357          ************************************************************************************/
 358          void Uart1_ISR(void) interrupt 20
 359          {
 360   1      
 361   1      }
 362          
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 7   

 363          
 364          
 365          /***********************************************************************************
 366          * 函数名称:Uart1_SendByte;
 367          *
 368          * 函数功能描述:通过uart1发送一个字节数据;
 369          *              
 370          * 输入参数:value:unsigned char, 要发送的数据变量;
 371          *
 372          * 返回数据:none;
 373          *
 374          * 注意: 发送完数据要清除中断标志;
 375          ************************************************************************************/
 376          void Uart1_SendByte(unsigned char value)
 377          {
 378   1               while(!(TI1));                         // Wait send data finished
 379   1               SBUF1=value;                           // Send the data to uart1
 380   1           SCON1&=~0x02;              // Clear interrupt flag
 381   1      }
 382          
 383          /***********************************************************************************
 384          * 函数名称:Uart1_SendString;
 385          *
 386          * 函数功能描述:通过uart1发送一个字符串数据;
 387          *              
 388          * 输入参数:pt: unsigned char xdata *, 要发送的字符串数据变量的指针;
 389          *
 390          * 返回数据:none;
 391          *
 392          * 注意: 字符串数据要以零为结束符;
 393          ************************************************************************************/
 394          void Uart1_SendString(unsigned char *pt)
 395          {
 396   1              while(*pt)
 397   1                      Uart1_SendByte(*pt++);
 398   1      }
 399          
 400          
 401          /***********************************************************************************
 402          * 函数名称:Uart1_ReceiveData;
 403          *
 404          * 函数功能描述:通过uart1接收一个字节数据;
 405          *              
 406          * 输入参数:none;
 407          *
 408          * 返回数据:SBUF1: unsigned char, 一个字节;
 409          *
 410          * 注意: 接收完数据要清除中断标志;
 411          ************************************************************************************/
 412          unsigned char Uart1_ReceiveData(void)
 413          {
 414   1              while(!(RI1));          // Wait receive data finished
 415   1              SCON1&=~0x01;       // Clear RI1 Flag
 416   1      
 417   1              return SBUF1;
 418   1      }
 419          
 420          
 421          /***********************************************************************************/
 422          // 文件结束
 423          /***********************************************************************************/

C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 8   


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