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

2025-04-05 05:22:17
推荐回答(1个)
回答1:

供参考
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;
CaiYangJiShu=0;
// CAIYANG_over=0; //完成一次采样标志
if(C8051F350[0]==0x55 && C8051F350[1]==0x55 && C8051F350[6]==0xAA && C8051F350[7]==0xAA&&Ji_Ou_fail==1)
{
CAIYANG_over=0;
CaiYnagDat=0;
CaiYnagDat<<=8;
CaiYnagDat += C8051F350[5];
CaiYnagDat<<=8;
CaiYnagDat += C8051F350[4];
CaiYnagDat<<=8;
CaiYnagDat += C8051F350[3];
CaiYnagDat<<=8;
CaiYnagDat += C8051F350[2];
}
}
}
}
这个程序是带奇偶校验的,可以在设置的时候去掉