首页 > 代码库 > 奶爸业余单片机学习之:UART串口通信学习笔记(二)
奶爸业余单片机学习之:UART串口通信学习笔记(二)
/*************************************
* 串口通信实验
* 晶振11.0592MHz
* 波特率9600bps
* 中断方式实现:单片机接收电脑数据,加1后发送回电脑
*
**************************************/
#include<reg52.h>
unsigned char dat;
/**********串口通信配置*******************/
void UART_CONFIG(unsigned long baud,cy)//baud波特率,cy晶振
{
TMOD = 0x20;//定时器1工作方式2,8位初值自动重装
TH1 = 256-(cy/(12*32*baud));
TL1 = 256-(cy/(12*32*baud));
TR1 =1;
SM0 = 0;//SM0,SM1的值确定串口工作方式
SM1 = 1;
REN = 1;//允许接收数据
EA = 1;//开总中断
ES = 1;//开串口中断
}
/********发送延时函数*****************/
int main()
{
UART_CONFIG(9600,11059200);
while(1)
{
}
return 0;
}
void interrupt_UART() interrupt 4
{
if(RI)//检测如果RI==1,则收到数据,
{
RI = 0;//软件置0
dat = SBUF;//读取接收到的数据到dat;
dat++;//数据加1
SBUF = dat;//数据发送到SBUF,自动发送出去
REN = 0;//接收禁止(发送数据时,禁止接收数据)
}
if(TI)//检测如果TI==1,则发送数据完成
{
TI = 0;//TI置0
REN = 1;//打开接收允许
}
}
奶爸业余单片机学习之:UART串口通信学习笔记(二)