急需单片机W78E58B与pc串口通信的C语言程序代码,发送用查询方式,接收用中断方式的程序。

我用的是W78E58B单片机,通过MAX232实现与pc机的电平转换。接收的数据是另外一个板子通过串口线发过来的,接收想用中断一直等待接收。发送想用查询方式主动发送给pc。现在想通过串口调试精灵看到结果。

#include <REG52.H>

bit Flag;
unsigned int ReData,SenData;

void main (void) {

SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON= 0x00;
TH1 = 0xFD; //baud reload value 9600、数据位8、停止位1。效验位无 (11.0592)
TL1 = 0xFD;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断

while(1)
{

if (Flag==1)
{
SBUF=SenData; //SUBF接受/发送缓冲器
while(TI==0);
TI=0;
Flag=0;
}

}

}

void ser_int (void) interrupt 4 using 1
{

if(RI == 1) //RI接受中断标志
{
RI = 0; //清除RI接受中断标志
ReData = SBUF; //SUBF接受/发送缓冲器
SenData=ReData;
Flag=1;
}
}

试下这个程序,PC发什么,它就回送什么。追问

请问定义的FLag是什么的标志?发送缓冲器是否空或接收缓冲器是否满的标志吗?初始值是0吗?

追答

不是满的标志,是接收到新数据的标志
如果flag为0,表示没有接收到新的数据,就不回传了,只有接收到新的数据,才回传

追问

那如果发送也用中断方式呢?程序···

追答

你所谓的发送也用中断方式,哪个中断啊?是怎么个发送中断方式啊?
有听说过发送也用中断方式吗?

温馨提示:答案为网友推荐,仅供参考