pwm ad ad采集 串口通讯 PIC16F1827 PROTEUS仿真

2019-03-25 19:00发布

串口通讯 目前遇到的问题是串口通讯接受不正常,可正常发送求大神指点看看那地方不对

附件中有源代码与仿真
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
dingzy_2002
1楼-- · 2019-03-26 20:45
看了下程序,目前我看出来的有3个问题:
1.串口接收中断的标志识别与清除:if(RCIE==1 && RCIF==1),这个只要RCIF就可以了,同时可写成if(RCIF)即可;
2.串口接收中断退出还是要将RCIF置0为好(虽然读取缓冲器也可将RCIF置0,但不一定保险);否则容易出现溢出错误,你在程序中也没有作溢出判断的语句。
3.逻辑问题?:是不是要在串口接收中接收20个字节后,再处理数据?如果是则:
      if(RCREG_Cnt>19) //超过缓冲区
          RCREG_Cnt=19;
      FlagRc=1;   3. //通知单片机正在接收     
      RcCnt=0;
      RCIE=1;
这段就显得不太正常,要不要重新理解下?
男哥
2楼-- · 2019-03-26 21:54
dingzy_2002 发表于 2016-5-22 10:08
备份引脚功能选项上,即APFCON0及APFCON1的功能寄存器上。
RX选择RB0还是RB1,TX选择RB2还是RB5,未设置 ...

RX为RB1,TX为RB2 现在设置的就是这个
男哥
3楼-- · 2019-03-27 00:00
 精彩回答 2  元偷偷看……
dingzy_2002
4楼-- · 2019-03-27 05:49
男哥 发表于 2016-5-22 11:35
按照第一点建议我也试了下,我在串口中语句中设置断点,然后进行全速运行,然后通过串口助手给单片机发送 ...

请问,你是用PROTEUS仿真的,还是用实物仿真的?
如果有可能,尽量用实物仿真,目前PIC用的新的单片机,可能PROTEUS仿真支持不完善;
另外,用调试器仿真,能看到RXBUF的内容,对调试会有帮助的。
男哥
5楼-- · 2019-03-27 11:33
dingzy_2002 发表于 2016-5-22 16:49
请问,你是用PROTEUS仿真的,还是用实物仿真的?
如果有可能,尽量用实物仿真,目前PIC用的新的单片机, ...

用的是PROTEUS仿真,因为没有仿真器,所以先用的PROTEUS,谢谢你的回答。
and01
6楼-- · 2019-03-27 11:56
问题解决了吗?兄弟

一周热门 更多>