會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



(1) 2 »


PIC18F65K40 只能发送单字符 不能发送字符串
新會員
註冊日期:
2012/08/24 11:38
所屬群組:
註冊會員
文章: 19
等級: 3; EXP: 9
HP : 0 / 52
MP : 6 / 940
離線
首先我简单测试单字符 是可以发送的且发送正确:
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,其他部分正确




然后我尝试了这屆A还是错误 发送的是0。
unsigned int TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
unsigned int i;
while(!TXSTA5bits.TRMT);
i = TEST[1];
TXREG5 =i;



我很怀疑是不是硬件有什么bug?希望得到大家的韺U!谢谢!

4月02日 12:22:28
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
資深會員
註冊日期:
2007/11/05 08:29
所屬群組:
註冊會員
文章: 229
等級: 14; EXP: 14
HP : 0 / 328
MP : 76 / 10518
離線
你可以先試試 unsigned char TEST[6] or char TEST[6]

4月02日 12:39:02
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
資深會員
註冊日期:
2007/11/05 08:29
所屬群組:
註冊會員
文章: 229
等級: 14; EXP: 14
HP : 0 / 328
MP : 76 / 10518
離線
另一方面 如果不排斥的話 可以使用 stdint.h 裡面的 datatype

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

4月02日 12:44:09
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
新會員
註冊日期:
2012/08/24 11:38
所屬群組:
註冊會員
文章: 19
等級: 3; EXP: 9
HP : 0 / 52
MP : 6 / 940
離線
感谢您的回复,

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

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

4月02日 12:53:32
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
資深會員
註冊日期:
2007/11/05 08:29
所屬群組:
註冊會員
文章: 229
等級: 14; EXP: 14
HP : 0 / 328
MP : 76 / 10518
離線
那字串是 TOSD

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

4月02日 13:38:35
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14501
等級: 73; EXP: 6
HP : 1080 / 1801
MP : 4833 / 76185
離線
串送字串最簡單是使用 printf() 或 sprintf( ).

4月02日 14:01:01
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
新會員
註冊日期:
2012/08/24 11:38
所屬群組:
註冊會員
文章: 19
等級: 3; EXP: 9
HP : 0 / 52
MP : 6 / 940
離線
感谢回复! 收到的是 NULL(0x00)


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

4月02日 14:39:24
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14501
等級: 73; EXP: 6
HP : 1080 / 1801
MP : 4833 / 76185
離線
void putsUART( char *data)
{
do
{ // Transmit a byte
putcUART(*data);
} while( *data++ );

4月02日 14:42:46
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
新會員
註冊日期:
2012/08/24 11:38
所屬群組:
註冊會員
文章: 19
等級: 3; EXP: 9
HP : 0 / 52
MP : 6 / 940
離線
uint8_t TEST[6]={0X54,0x4F,0x53,0x44,0X0D};
while(1)
{
while(!TXSTA5bits.TRMT);
TXREG5 =TEST[0];

delay_100ms(20);
}


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

附加檔案:



jpg  20180402145128.jpg (115.98 KB)
9838_5ac1d3104af0b.jpg 1334X1001 px

4月02日 14:52:18
轉換PDF檔 列印


Re: PIC18F65K40 只能发送单字符 不能发送字符串
新會員
註冊日期:
2012/08/24 11:38
所屬群組:
註冊會員
文章: 19
等級: 3; EXP: 9
HP : 0 / 52
MP : 6 / 940
離線
感谢回复!

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

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

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

4月02日 15:11:59
轉換PDF檔 列印



(1) 2 »



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2018 Winter Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project