打印

pic能发送不能接收

[复制链接]
2417|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
岛岛|  楼主 | 2010-11-17 11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <p18f4680.h>
char startupString5[]="123\r";
void InitUsart3(void)//串口初始化
{
  TRISCbits.TRISC7 = 1;                                                               
  TRISCbits.TRISC6 = 0;
  BAUDCON = 0b00000000;
  SPBRG = 32;
  RCSTAbits.SPEN=1;//串口使能
  RCSTAbits.CREN=1;//使能接收
  PIE1bits.TXIE = 1;//发送中断使能
  TXSTAbits.TXEN=1; //使能发送
  TXSTAbits.BRGH=1;//高速模式
// INTCONbits.GIE=1;
  //INTCONbits.PEIE=1;   
}


void main()//主程序
{
  
   
    int j=0;
    int r;
    InitUsart3();//初始化串口
  
while(1)
{
while(PIE1bits.RCIE)
startupString5[0]=RCREG+1;
//PIR1bits.RCIF=0;
while(PIE1bits.RCIE)
startupString5[1]=RCREG+2;
//PIR1bits.RCIF=0;
while(PIE1bits.RCIE)
startupString5[2]=RCREG+3;
//PIR1bits.RCIF=0;
j=0;
while(startupString5[j]!='\0')
    {
   while(!PIR1bits.TXIF);
   TXREG = startupString5[j];

        j++;
}
}
}



接收的部分直接跳过
一直发送数据 不知什么原因  
做过的指点一下吧
沙发
yewuyi| | 2010-11-19 11:00 | 只看该作者
接受需用接受中断,否则你如何保证时序对齐。

使用特权

评论回复
板凳
岛岛|  楼主 | 2010-11-19 13:33 | 只看该作者
我直接判断标志位RCIF应该可以吧 因为接收到数据时RCIF就置1 我读完数据RCIF被清零 然后继续等RCIF被置1

我avr直接判断标志位就可以的

使用特权

评论回复
地板
tcc8073| | 2010-11-20 17:40 | 只看该作者
仔细看串口接收和发送相关的位处理,PIC和AVR在处理上有区别的

使用特权

评论回复
5
zdhlixiang2006| | 2010-11-20 22:26 | 只看该作者
我看了一下,发现这条指令while(!PIR1bits.TXIF);后面没有跟上PIR1bits.TXIF=0; 虽然从你的程序上看不出不加这条指令会有什么影响,但是肯定会出错误

使用特权

评论回复
6
岛岛|  楼主 | 2010-11-24 10:25 | 只看该作者
搞定 谢谢

使用特权

评论回复
7
岛岛|  楼主 | 2010-11-24 10:25 | 只看该作者
while循环没搞好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

61

帖子

2

粉丝