首先我简单测试单字符 是可以发送的且发送正确:
while(!TXSTA5bits.TRMT);
TXREG5 =0X0D;
然后我些了一个字符串的测试,发现都是发送0
unsigned char TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
void putrs5USART( char data*)
{
do
{ // Transmit a byte
while(!TXSTA5bits.TRMT);
TXREG5 =*data;
} while( *data++ );
}
putrs5USART(TEST);
为了查明原因 我更加简化了
unsigned char TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
while(!TXSTA5bits.TRMT);
TXREG5 =0X54;
while(!TXSTA5bits.TRMT);
TXREG5 =TEST[1];
while(!TXSTA5bits.TRMT);
TXREG5 =0x53;
while(!TXSTA5bits.TRMT);
TXREG5 =0x44;
while(!TXSTA5bits.TRMT);
TXREG5 =0X0D;
delay_100ms(20);
然后发现带 TXREG5 =TEST[1]; 这一部分还是0,其他部分正确
然后我尝试了这样,还是错误 发送的是0。
unsigned char TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
unsigned char i;
while(!TXSTA5bits.TRMT);
i = TEST[1];
TXREG5 =i;
这边还尝试了 unsigned int char 以及#include <stdint.h> 后用uint8_t
但是问题依旧,发送的是0,
我感觉问题可能是TXREG 寄存器赋值的问题.
我很怀疑是不是硬件有什么bug?希望得到大家的帮助!谢谢! |