作业帮 > 综合 > 作业

一个奇怪的串口通讯问题——估计只有高手才能解决

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/18 10:32:47
一个奇怪的串口通讯问题——估计只有高手才能解决
本人写了一个单片机与计算机之间的串口通讯程序,问题的现象是:只有当计算机向单片机发送一个数据后,计算机才能收到单片机发送的数据,否则,计算机始终无法收到单片机发送的数据.
单片机使用的是C8051F040,程序是用C语言写的.上位机使用的程序是串口调试助手,自己也使用VC写过程序,无论是串口调试助手,还是自己用VC写的程序,都存在上述问题.
此外,对于河边草000的回答,本人做一个补充:计算机与单片机在程序上不存在主从关系,单片机上电后,立即就开始向计算机发送数据.
一个奇怪的串口通讯问题——估计只有高手才能解决
真的很滥.这是一个发I Like You!的程序,简单实用.
没用中断,
#include
#define uchar unsigned char
#define uint unsigned int
uchar idata w[]="I Like You!"; //数据定义
void delay(uchar);
void main(void)
{
uchar count;
TMOD=0X20; //工作在方式2
TL1=0xfd; //T1波特率9600bps
TH1=0xfd; //串行工作在方式3
SCON=0xd8;
TR1=1; //启动T1
while(1)
{
count=0;
while(*(w+count)) //判断一串数据是否结束
{
SBUF=*(w+count); //发送数据
while(TI==0); //查询发送是否结束
TI=0; //清除发送一标志位
count++; //准备发送一个数据
}
delay(100);
}
}
void delay(uchar times) //延时子程序
{
uchar i;
while(times--);
for(i=0;i