Keil调试串口助手,单片机无法接收上位机发送的数据;但可以发送 PC发送数据时,单片机RX波形幅值太小

/*rx_flag,n为全局变量,PC发送数据“FM11.6”*/while(1);{if(rx_flag){for(m=0;m<n;m++){if(m<8)lcd_wc... /*rx_flag,n为全局变量,PC发送数据“FM 11.6”*/
while(1);
{if (rx_flag)
{for(m=0;m<n;m++)
{if(m<8)
lcd_wcom(0x80+m);
else if(7<m<128)lcd_wcom(0xc0+m-7);
ms_delay(2);
lcd_wdata(rxbuf[m]);
}}}rx_flag=0;
}
void init_serialcom()
{TMOD=0x20;//timer1,mode2,8-bit reload
SCON=0x40;//串口工作方式1
PCON&=0x7F;//SMOD=0
TH1=0xfd;
TL1=0xfd;//9600 @11.0592MHZ
TR1=1;//timer1 run
ES=1;//开串口中断
EA=1;//开中断
}
/*----------------中断接收--------------------*/
void UART() interrupt 4
{ ES=0;//关中断
if (RI)
{RI=0;//接收引起中断
rxbuf[n]=SBUF;
while(!RI);//OK or NG???
n++;
}
if(n==7) rx_flag=1;
ES=1; }
问题出在protues,需在虚拟上位机选中仿真一项
展开
 我来答
pengguismile
2013-05-16 · TA获得超过687个赞
知道小有建树答主
回答量:332
采纳率:100%
帮助的人:119万
展开全部
试试这样:
void UART() interrupt 4
{
//ES=0;//关中断//不需要关中断
if (RI)
{RI=0;//接收引起中断
rxbuf[n]=SBUF;
//while(!RI);//OK or NG???//删除这句
n++;
}
if(n==7) {rx_fla=1;n=0;}//注意重置n
//ES=1;
}
追问
请问一下如果用串口助手发送数据,protues能用视波器测试到准确的波形吗?
追答
亲爱的,你要弄清楚仿真的含义,就虚拟的环境下,它是可以的。
但,你现在涉及的可是真实的硬件,proteus可没有检测你实物串口的电路,既然没有检测电路,她如何显示你的波形呢?
bxf0817
2013-05-17 · TA获得超过2162个赞
知道小有建树答主
回答量:1348
采纳率:0%
帮助的人:1057万
展开全部
如果你的问题没有解决的话,可以把你的仿真图和程序发到我的邮箱里,帮你研究一下。857656772
追问
程式和电路都传过去,麻烦一下~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式