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

📄 89s52_serl.txt

📁 基于89s52的c51串口通信源程序 串口的4种工作方式对应着三种波特率模式: 对于工作在方式1和方式3
💻 TXT
字号:
基于89s52的c51串口通信源程序
                                       

程序为能收发一个字符,在keil 51下运行。正常。大家可以在上面加自己的应用。

搞了好几天终于搞明白了,所以发上来给大家共享。

#include "at89x52.h"

char uart_data;
bit r_flag=0;

void main (void) 
{
/*串口初始化,模式为在11.0592晶振下,波特率为115200*/    
    SCON = 0x50;       /* uart in mode 1 (8 bit), REN=1 */
    T2CON=T2CON & 0xf0;               /*clear low 4 bits*/
 T2CON=T2CON | 0x30;               /*set t2con.5=1,t2con.4=1,timer2 for sp*/
 TH2=0xff;
 TL2=0xfd;
 RCAP2H=0xFF;                      /*the capture/reload register for timer 2*/
 RCAP2L=0xFD;
   ES = 1;            /* Enable serial interrupt */
 EA = 1;           /* Enable global interrupt */
 TR2 = 1;                         /*start timer2,tr2=0 for stop*/


   while(1)
   {
      if(r_flag==1)
   {
         SBUF=uart_data;
    
   r_flag=0;
   }
   };                    /* endless */
}  

/**
 * FUNCTION_PURPOSE: serial interrupt, echo received data.
 * FUNCTION_INPUTS: P3.0(RXD) serial input
 * FUNCTION_OUTPUTS: P3.1(TXD) serial output
 */
void serial_IT(void) interrupt 4 
{

 if (RI == 1) 
 {                     /* if reception occur */
   RI = 0;                /* clear reception flag for next reception */
   uart_data = SBUF;             /* Read receive data */
   r_flag=1;
   //SBUF = uart_data;          /* Send back same data on uart*/
 }
 else TI = 0;        /* if emission occur */
                   /* clear emission flag for next emission*/
 
}

⌨️ 快捷键说明

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