蓝桥杯 串口

#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)
	{
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值