[PIC®/AVR®/dsPIC®产品] 我的PIC33FJ128串口发送数据最多只能发送5个字节

[复制链接]
2584|4
 楼主| 峰狂战队 发表于 2014-7-9 11:37 | 显示全部楼层 |阅读模式
现在在用dsPIC33FJ128GP706这个片子控制GPRS模块发送短信,我用串口发送AT指令,有的一条指令包含字节数超过5个,用串口发送时,最多只能发送5个,我的串口发送程序如下:

void messagesend(void)
{
  uchar i=0;
  uchar SIMCON[]={'A','T','\r\n','+','C','M'};
  for(i=0;i<7;i++)
   {
    U2TXREG=SIMCON[i];
    U2STAbits.UTXEN = 1;
   }
  
  delay(200000);
}
  我用串口助手进行实验时只接收到了前五个字节,后面的都丢了  这是怎么回事 请教大神指导。。。
lanmp 发表于 2014-7-9 11:41 | 显示全部楼层
因为只有4个FIFO。话说您都不等发送标志的么?
 楼主| 峰狂战队 发表于 2014-7-9 12:36 | 显示全部楼层
lanmp 发表于 2014-7-9 11:41
因为只有4个FIFO。话说您都不等发送标志的么?

这个芯片好像只有IFS1bits.U2RXIF中断标志位、U2STAbits.TRMT发送移位寄存器空位可以判断发送与否,我没有找到发送标志,中断标志位和移位寄存器空位我都使用过 也是不行,请问现在我该怎么做?  我就是按照按键按下进入子程序,然后发送数据,中断也试过,也不行    该怎么才能连续发送数据?
lanmp 发表于 2014-7-9 14:24 | 显示全部楼层
RXIF是接收中端,当然不行了。寄存器空肯定可以得。
 楼主| 峰狂战队 发表于 2014-7-9 16:12 | 显示全部楼层
lanmp 发表于 2014-7-9 14:24
RXIF是接收中端,当然不行了。寄存器空肯定可以得。

嗯  用的发送寄存器空来判断是否可以进行下一次发送,开始不能连续发送是因为我用的是if语句进行读取if(U2STAbits.TRMT==1)  这样的话就不行,因为根本来不及识别,现在改完while(U2STAbits.TRMT==0)来判断就行了    谢谢回复   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

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