能帮我写一个用C语言实现的串口通讯程序吗?

来源:百度知道 编辑:UC知道 时间:2024/06/15 22:01:55
我的单片机学习板是采用了USB转换电路,可将USB接线直接与PC机的USB连接,我想通过对P1管脚八个发光二极管的亮暗控制来验证一下。代码如下:#include<reg52.h>
unsigned char buf;
unsigned char temp;
void delay();
void senddata ( char DATA);
char code table[]={0x120,0x52,0x56,0xaf,0xdf,0xad,0xae};
void VarIntFun ()//设置串口通讯
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
EA=1;
TR1=1;
ES=1;
SCON=0x50;
PCON=0x00;
TI=0;
RI=0;
}

void timer () interrupt 3//设置时间寄存器
{
TH1=0xfd;
TL1=0xfd;
}
void R_inter () interrupt 4
{
unsigned char i;
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据

if (buf!=0) //如果电脑发送的数据不为零,即电脑只要发过数据则发送字符串
{
for (i=0;i<7;i++)
{
senddata(table[buf-48]);delay();
}
}
if(buf!=0x0D)
{
if(buf!=0x0A)
temp =buf;
}

供参考
void MCU_Initialize(void)
{
SCON =0xDC; //在11.0592MHz下,设置串行口波特率为9600,方式3,并允许接收 9为
SCON = 0x50;
TCON = 0x00;
TMOD |=0x21; //定时器工作于方式2,自动装载方式 T0 16位定时器
TH1=0xFD;
IP = 0X90;
ES=1;
ET0=1;
//TR1=1;
EA=1;
}
////////////////////////////发送一个字节/////////////////////////////
/*void putchar(unsigned char byte)
{
if(JO_check(byte)==1)
TB8=0;
else
TB8=1;
SBUF=byte;
while(!TI)
TI=0;
} */
//////////////////////////////////串口接受程序 与350通信//////////////////////
void RX() interrupt 4
{
if(RI==1)
{
RI=0;
C8051F350[CaiYangJiShu]=SBUF;
if(RB8==JO_check(C8051F350[CaiYangJiShu]))
{
Ji_Ou_fail=0; //奇偶效验失败 通知F350从新发送
}
CaiYangJiShu++;
if(CaiYangJiShu==8)
{
TR1=0;
CS_350=1;
Cai