• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


PIC18F65K40 只能发送单字符 不能发送字符串
#1
新會員
新會員


查看用戶資訊
首先我简单测试单字符 是可以发送的且发送正确:
while(!TXSTA5bits.TRMT);
TXREG5 =0X0D;





然后我些了一个字符串的测试,发现都是发送0
unsigned int 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 int 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 int TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
unsigned int i;
while(!TXSTA5bits.TRMT);
i = TEST[1];
TXREG5 =i;



我很怀疑是不是硬件有什么ug?希望得到大家的助!谢谢!

發表於: 2018/4/2 12:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#2
資深會員
資深會員


查看用戶資訊
你可以先試試 unsigned char TEST[6] or char TEST[6]

發表於: 2018/4/2 12:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#3
資深會員
資深會員


查看用戶資訊
另一方面 如果不排斥的話 可以使用 stdint.h 裡面的 datatype

如 int8_t uint8_t int16_t uint16_t... 這樣可避免混淆

發表於: 2018/4/2 12:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#4
新會員
新會員


查看用戶資訊
感谢您的回复,

这边尝试了 unsigned char char 以及#include <stdint.h> 后用uint8_t

但是问题依旧,发送的是0,
我感觉问题可能是TXREG 寄存器赋值的问题.

發表於: 2018/4/2 12:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#5
資深會員
資深會員


查看用戶資訊
那字串是 TOSD

你收到 O(歐) 還是 0(零) 還是 NULL(0x00)

發表於: 2018/4/2 13:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#6
版主
版主


查看用戶資訊
串送字串最簡單是使用 printf() 或 sprintf( ).

發表於: 2018/4/2 14:01
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#7
新會員
新會員


查看用戶資訊
感谢回复! 收到的是 NULL(0x00)


另外请问 如果用printf的话,因为我需要用到5个串口,目前只是测试其中一个,之前用PIC16的时候 的确是用 printf,但目前这种情printf 好像没有办法区分是哪个串口发送吧?请问如果用printf有什么办法区分5个不同的串口吗?

發表於: 2018/4/2 14:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#8
版主
版主


查看用戶資訊
void putsUART( char *data)
{
do
{ // Transmit a byte
putcUART(*data);
} while( *data++ );

發表於: 2018/4/2 14:42
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#9
新會員
新會員


查看用戶資訊
uint8_t TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
while(1)
{
while(!TXSTA5bits.TRMT);
TXREG5 =TEST[0];

delay_100ms(20);
}


附件是我用示波器测量的波形

Attach file:



jpg  (0.00 KB)


發表於: 2018/4/2 14:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC18F65K40 只能发送单字符 不能发送字符串
#10
新會員
新會員


查看用戶資訊
感谢回复!

这个函数我用过 但并没用成功\r

void putrs5USART( char data*)
{
do
{
// Transmit a byte
while(!TXSTA5bits.TRMT);
TXREG5 =*data;
}while( *data++ );
}

然后因为这没成功,我才想分步骤测试.

發表於: 2018/4/2 15:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]