请教PIC873A串口接收问题

[复制链接]
2432|7
 楼主| seacore_2008 发表于 2013-6-5 23:58 | 显示全部楼层 |阅读模式
使用串口助手发送1234567890,回显数据比较乱22222222610,请阁位前辈指点一下,谢谢!程序如下;
//接收采用中断实现
#include <pic.h>
unsigned char error=0x00;  //错误数据帧,丢弃
bit Q=0;                   //一次数据帧接收完成标志位
unsigned char message[10]; //数据信息缓存区
unsigned char j=0x00;      //数据信息的长度

void interrupt isr(void)   //接收中断处理
{
    if(RCIF&&RCIE)
    {
        if(FERR)//监测是否有帧错误
        {
            error=RCREG;   
        }
        if(OERR)
        {
            CREN=0 ;
            CREN=1 ;  //接收模块被复位重置,OERR清零
        }

        message[j]=RCREG;  //保存每一次接收到的数据
        j++;
        if(j>1)
        {
                   Q=1;       //10个数据字节接收完成标志
                   j=0;
        }
    }
}
void usart_init()           //串口初始化
{
    INTCON=0 ;    // 关闭所有的中断
    TRISC6=1 ;
    TRISC7=1 ;
    SPBRG=25;//波特率9600,6M时钟
    BRGH=1;  //高速波特率
    SYNC=0;
    SPEN=1;  //异步串口工作方式
    TXEN=1;  //USART工作于发送器方式
      
    TXIE=0;  //发送不需要中断处理
    RCIE=1;  //接收需要中断处理
    CREN=1;  //激活接收器
    PEIE = 1;
    GIE = 1;
}
void send_char(unsigned char byte)  //发送一个字节的数据
{
    TXREG = byte;
    while(!TXIF);

      
}
void main()          //将上位机发送的数据通过串口显示
{
    usart_init();

    while(1)
    {
       if(Q==1)
       {send_char(j);
            Q=0;
            for(j=0;j<10;j++)
               send_char(message[j]);            
        }
    }
}


kvdong 发表于 2013-6-6 08:13 | 显示全部楼层
   j++;
        if(j>1)    //这里明显跟你的想法不一致吧   
    {
                   Q=1;       //10个数据字节接收完成标志
                   j=0;
        }

 楼主| seacore_2008 发表于 2013-6-6 22:58 | 显示全部楼层
多谢楼上指点,实际上
j++;
         if(j>10)    //发帖时不小心搞掉一个0,
    {
                    Q=1;       //10个数据字节接收完成标志
                    j=0;
         }
yklstudent 发表于 2013-6-7 18:49 | 显示全部楼层
我就感到好奇了 你不是复制粘贴的?
好笑的说是发帖漏了 不理解
 楼主| seacore_2008 发表于 2013-6-8 12:10 | 显示全部楼层
搞定了,少了一条J=0;
cmc1205 发表于 2014-3-6 20:36 | 显示全部楼层
谢谢楼主~
兰天白云 发表于 2014-3-7 16:06 | 显示全部楼层
j没初始化?
yewuyi 发表于 2014-3-8 12:22 | 显示全部楼层
这种代码编辑错误也纠结得需要上来提问?

拉出去鞭笞100下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

31

帖子

0

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