📄 89s52_serl.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 + -