声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的真理。我的目的是学习和有可能成为可以向别人分享的经验,因此有错误我会虚心接受,并认真改正。
代码:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar ch,RIflag,TIflag;
void serialinit()
{
SCON|=0x50;//串口模式一用10位UART(异步收发传输器),波特率可变
PCON|=0x0;//SMOD=0波特率不加倍
TMOD|=0x20;//定时器1为模式2,8位自动填充计数器
TH1=0xfd;//波特率为9600bps。
TL1=0xfd;
TR1=1;//计时器1开启
EA=1;//总中断开启
ES=1;//串口中断开启
}
void sentch()
{
SBUF=ch;
while(!TI);
TI=0;
}
void main()
{
serialinit();
while(1)
{
if(RIflag==1)
{
ES=0;
RIflag=0;
sentch();
ES=1;
}
};
}
void serialportinterrupt() interrupt 4
{
if(RI)
{
RI=0;
ch=SBUF;
RIflag=1;
}
}
小结:
主函数检测接收中断,然后调用发送函数发送数据。