简单51单片机串口程序

2024-11-25 22:57:14
推荐回答(4个)
回答1:

试试下列程序,这时用中断发送的。

#include
#define uchar unsigned char
uchar txt[] = "hello";
uchar i = 0;
void main(void)
{
PCON = 0X00;
SCON = 0X50;
TMOD = 0X20;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
EA = 1;
ES = 1;
TI = 1;
while(1) {
if(i == 6) {
i = 0;
TI = 1;
}
}
}
void uart() interrupt 4
{
if(RI == 1) RI = 0;
if(TI == 1) {SBUF = txt[i++]; TI = 0;}
}

本程序,可以用串口助手接收。收到的是:hellohellohellohellohello....

回答2:

#include#define uchar unsigned char
uchar txt[]="hello";
uchar i=0;
void main(void)
{
PCON=0X00;
SCON=0X50;
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
EA=1;
ES=1;
TR1=1;
SBUF=txt[0];
while(1)
{
}
}
void uart() interrupt 4
{
if(RI==1)
RI=0;

if(i==6)
{
i=0;
return;
}
if(TI==1)
{
TI=0;
SBUF=txt[i++];
}
}
另外,波特率多少,晶振频率多少?

回答3:

发送的话用查询方式就好了,稍微改一下:
...
while(1) {
if(i==6)
i=0;
while(!TI);
TI = 0;
SBUF = txt[i++];
}
}

回答4:

波特率没设置好