#include<reg52.h>
sfr AUXR = 0x8e; //设置辅助寄存器AUXR
unsigned char dat;
void Select_HC138()
{
P2 = (P2 & 0x1f) | 0xa0;
P0 = 0x00; //关闭蜂鸣器和继电器
}
void Send_byte(unsigned char infr) //查询方式发送数据
{
SBUF = infr;
while(TI == 0); //等待发送
TI = 0; //手动清0
}
void Init_uart() //串口中断初始化
{
SCON = 0x50; //异步8位uart并允许接收
AUXR = 0x00; //将AUXR置0
TMOD = 0x20; //自动重装8位定时器:产生9600B/s的波特率
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1; //启动定时器1
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
void Service_uart() interrupt 4 //串口中断服务函数
{
if(RI == 1) //接收上位机数据
{
RI = 0; //手动清0
dat = SBUF;
Send_byte(dat+2);
}
// if(TI == 1) //发送数据
// {
// TI = 0; //手动清0
// }
}
void main()
{
Init_uart();
Select_HC138();
Send_byte(0x25);
while(1);
}
蓝桥杯单片机CT107D_11_串口通信的基本应用
最新推荐文章于 2023-11-08 20:17:29 发布