#include "stc15.h"
#define u8 unsigned char
#define u16 unsigned int
#define cor_Pin(x,y) P0=y;P2=x;P2=0
sbit TX = P1^1;
sbit RX = P1^0;
void UartInit(void) //9600bps@12.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TL1 = 0xC7; //设置定时初始值
TH1 = 0xFE; //设置定时初始值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
ES = 1;
EA = 1;
}
bit busy;
void SendByte(u8 dat)
{
while(busy);
busy=1;
SBUF=dat;
}
u8 Rdat;
void ServiceUart() interrupt 4
{
if(RI==1)//如果接收完成
{
RI=0;
Rdat=SBUF;//Rdat为从上位机接收到的数据
SendByte(Rdat+2);//再将收到的数据再发送到上位机
}
if(TI)
{
TI=0;
busy=0;
}
}
void SendString(unsigned char *str)
{
while(*str !='\0')
SendByte(*str++);
SendByte("\r\n");
}
void main(void)
{
cor_Pin(0x80,0xff);
cor_Pin(0xa0,0x00);
UartInit();
SendString("aTc");
while(1)
{
}
}
蓝桥杯 串口
最新推荐文章于 2024-11-02 15:54:45 发布