关于pic的uart接收问题

[复制链接]
2416|12
 楼主| colorful88 发表于 2014-10-25 11:23 | 显示全部楼层 |阅读模式
我在文件里定义了一个extern volatile unsigned char com_rx_buffer[150],但是在接收上位机命令时,却只能接收到101位的字符串,我很想不清楚。坛友们能有个思路吗?
#define COM_RX_BUFFER_SIZE  150
wuhenyouyu 发表于 2014-10-26 09:20 来自手机 | 显示全部楼层
串口比较慢,你要想办法知道怎么接受完了一针数据!
wangch_sh 发表于 2014-10-26 19:14 | 显示全部楼层
哪款单片机?RAM多大?
 楼主| colorful88 发表于 2014-10-26 21:33 | 显示全部楼层
wangch_sh 发表于 2014-10-26 19:14
哪款单片机?RAM多大?

16lf1947,mplab编译的时候没有报错
yklstudent 发表于 2014-10-27 18:19 | 显示全部楼层
直接上代码
 楼主| colorful88 发表于 2014-10-27 20:21 | 显示全部楼层
yklstudent 发表于 2014-10-27 18:19
直接上代码

unsigned char com_rx_buffer[COM_RX_BUFFER_SIZE];
#define COM_RX_BUFFER_SIZE  240;
extern volatile unsigned char com_rx_count;
void interrupt ISR()
{
    if (RCIF)
    {
         RCIF = 0;
         com_rx_byte = RC1REG;
         com_rx_buffer[com_rx_count] = com_rx_byte;
         com_rx_count++;
         if (com_rx_count >= (COM_RX_BUFFER_SIZE - 1))
        {
            com_rx_count = 0;   
        }
    }
}
yklstudent 发表于 2014-10-27 21:25 | 显示全部楼层
光看这段代码,还真没有甚么问题
ilikedota 发表于 2014-10-29 20:24 | 显示全部楼层
是不是有别的中断?
chen_jhhb 发表于 2014-10-29 20:44 | 显示全部楼层
求正解
 楼主| colorful88 发表于 2014-10-30 13:07 | 显示全部楼层
ilikedota 发表于 2014-10-29 20:24
是不是有别的中断?

有的,tmr0中断,INT下降沿中断,发送中断
lanmp 发表于 2014-10-30 16:08 | 显示全部楼层
101个字节之后发生了什么?不进中断了?Overrun Error了?
 楼主| colorful88 发表于 2014-10-30 20:11 | 显示全部楼层
本帖最后由 colorful88 于 2014-10-30 20:15 编辑
lanmp 发表于 2014-10-30 16:08
101个字节之后发生了什么?不进中断了?Overrun Error了?

最近没仔细调,我先把数组定义到240,能够接收完全,先这么用下
我等有空,我再调调,看看是不是有帧错误或者溢出错误
改下程序,确认接收完毕
ilikedota 发表于 2014-11-1 21:57 | 显示全部楼层
colorful88 发表于 2014-10-30 13:07
有的,tmr0中断,INT下降沿中断,发送中断

建议你从头理清一下逻辑思路,如果有多种中断共存的话,中断之间可能相互打断,从而影响程序运行的时序,导致出现一些你想象不到的结果,我以前遇到过这样的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

56

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部