51单片机串口通信程序用串口调试时,每次打开卡串口只能发一次数据,要想发第二次必须关闭串口再打开才行
#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintvoidinit(){TMOD=0x20;/...
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void init()
{
TMOD=0x20; //设置定时器1为工作方式2,8位重装
TH1=0xfd;//
TL1=0xfd;//在波特率为9600下
EA=1; //开总中断
TR1=1;//打开定时器中断
SCON=0x50;//设置为串口工作方式1,10位数据
ES=1;//串口中断打开
}
void main()
{
init();
while(1);
}
void receive() interrupt 4
{
RI=0;//复位串口中断
P0=~SBUF;//接收数据显示在P0口
}
以上是通过串口发一个数据给单片机,然后显示在P0口LED灯上,但我用串口调试助手发送时,每次只能发一次,要想发第二次必须关掉串口,再打开串口才行,请问这是什么情况?程序哪里有问题? 展开
#define uchar unsigned char
#define uint unsigned int
void init()
{
TMOD=0x20; //设置定时器1为工作方式2,8位重装
TH1=0xfd;//
TL1=0xfd;//在波特率为9600下
EA=1; //开总中断
TR1=1;//打开定时器中断
SCON=0x50;//设置为串口工作方式1,10位数据
ES=1;//串口中断打开
}
void main()
{
init();
while(1);
}
void receive() interrupt 4
{
RI=0;//复位串口中断
P0=~SBUF;//接收数据显示在P0口
}
以上是通过串口发一个数据给单片机,然后显示在P0口LED灯上,但我用串口调试助手发送时,每次只能发一次,要想发第二次必须关掉串口,再打开串口才行,请问这是什么情况?程序哪里有问题? 展开
4个回答
展开全部
程序没问题啊。断电打开文件,再次通电才可以下进去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我试过了,没有问题啊!换一个串口调试助手试一试!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是你的串口调试助手有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序没问题,从电脑的串口硬件和助手找问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询