串口通信(查询)控制P0口LED灯
使用芯片:AT89S52
函数功能:串口通信MAX232的查询方式使用,通过串口发送数据控制单片机的P0口的LED灯。
博主才疏学浅,可能会出现设计不足和错误,欢迎大家评论区交流。^ _ ^
/*******************************************************************
此函数功能为:串口通信MAX232的查询方式使用,通过串口发送数据控制单
片机的P0口的LED灯。
作者:Crazy Wind
日期:2020.10.15
version:1.0.0
********************************************************************/
#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar y;
/*****************************************************
函数功能:发送数据x
******************************************************/
void send_char(uchar x)
{
SBUF=x; //SBUF是数据缓冲寄存器(暂存数据),把数据x输入到SBUF
while(!TI); //等待数据发送
TI=0; //每发送8位数据TI就自动置1,需软件清零
}
/*****************************************************
函数功能:串口初始化、T1作波特率发生器初始化
******************************************************/
void init()
{
TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
TH1=0xFD; //波特率9600
TL1=0xFD;
SCON=0x50; //串口工作方式1 允许接收
PCON=0x00; //波特率不倍增
TR1=1; //启动定时器1
}
void main()
{
init();
while(1)
{
if(RI==1) //查询是否有数据到来
{
RI=0; //每接收8位数据RI就自动置1,需软件清零
y=SBUF; //SBUF是数据缓冲寄存器(暂存数据),把数据输出到y
P0=y; //y中的数据传给P0
send_char(y); //回传接收到的数据
}
}
}