#include<reg52.h>
unsigned int a;
void ConfigUART(unsigned int baud);
void main()
{
ConfigUART(9600);
while(1)
{
while(!RI);
a=SBUF;
RI = 0;
SBUF = a;
while(!
ti);
TI = 0;
}
}
void ConfigUART(unsigned int baud)
{
SCON = 0x50;
TMOD &= 0X0F;
TMOD |= 0x20;
TH1 = 256 - (11059200/12/32)/baud;
TL1 = TH1;
ET1 = 0;
TR1 = 1;
}
这个程序是9600波特率的,这个程序的意思大致就是敲什么返回什么。
上图是我在大框里敲1返回的值,不知道哪错了
-
#define uchar unsigned char;
#define uint unsigned int;
unsigned char flag,a;
void init()
{
REN=1;//允许串行口接收数据
SM0=0;
SM1=1;//设置串口工作方式 1
TMOD=0x20;//定时器1工作方式2(八位自动重装)
TH1=0xfd;
TL1=0xfd;//波特率9600
EA=1;//开总中断
ES=1;//开串行口中断
TR1=1;//启动定时器1
while(!RI);//接收数据
RI=0;//清零
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0; //发送数据关闭串口中断
SBUF = a;//发送
while(!TI);//TI:请求中断标志位,在发送完一帧数据后自动置位
TI=0;
ES=1;
flag=0;
}
}
}
void ser() interrupt 4
{
RI=0; //软件清零
/* P1=SBUF 可加可不加,用于检测是否有数据接收 */
a=SBUF; //取走
flag=1;
}
//该注释的都注释了,自己看吧
一周热门 更多>