打印

pic c18f 串口打印调试程序

[复制链接]
2981|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
isbit|  楼主 | 2010-3-25 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SendToComport('t');//---串口打印正常
SendToComport('t');//---串口打印正常
SendToComport('t');//---串口打印正常
SendToComport('t');//---串口打印正常




Prints("test",1);乱码  1--为换行打印
不知什么原因,请指点,谢谢!
/**************************************************************************
/º¯ÊýÃû³Æ:ini_UART
/Èë¿Ú²ÎÊý:none
/³ö¿Ú²ÎÊý:none
/º¯Êý¹¦ÄÜ:´®¿Ú³õʼ»¯20Mhz
//º¯ÊýÃû³Æ:prints
***************************************************************************/
void ini_UART(void)
{
SPBRG=25;   //½«´«ÊäµÄ²¨ÌØÂÊÉèΪ115200b/s
TXSTA=0X24;//Ñ¡ÔñÒì²½´«Ê䷽ʽ16bit
//BAUDCON = 0x08;      // BRG16 = 1
RCSTA=0X80;//´ò¿ª´®¿Ú
mInituart_TX();
mInituart_RX(); //ÉèΪÊäÈë
}

/**************************************************************************
/º¯ÊýÃû³Æ:SendToComport
/Èë¿Ú²ÎÊý:BYTE d
/³ö¿Ú²ÎÊý:none
/º¯Êý¹¦ÄÜ:Íù´®¿Ú·¢ËÍÒ»×Ö½ÚÊý¾Ý
/
***************************************************************************/
void SendToComport(uint8 d)
{

while(PIR1bits.TXIF==0);
  TXREG=d;
}

/**************************************************************************
/º¯ÊýÃû³Æ:prints
/Èë¿Ú²ÎÊý:uint8 * pd,uint8 line_feed
/³ö¿Ú²ÎÊý:none
/º¯Êý¹¦ÄÜ:·¢ËÍÒ»¸ö×Ö·û´®
/
***************************************************************************/
void Prints(const uint8 *pd,uint8 line_feed)
{
while((*pd)!='*')
   {
    SendToComport(*pd);
    pd++;
   }
  if(line_feed)
  {
   SendToComport('\r');
   SendToComport('\n');
  }
}
沙发
歪 歪| | 2010-3-25 16:23 | 只看该作者
抓包分析,看看到底发送了什么字符。

下载地址:
http://download.cnet.com/ComTrac ... 6892.html?tag=mncol

感觉好别忘了给个review(评论),谢谢!

使用特权

评论回复
板凳
NE5532| | 2010-3-25 19:45 | 只看该作者
拿串口助手抓下来看了。

使用特权

评论回复
地板
isbit|  楼主 | 2010-3-27 10:00 | 只看该作者
我看指针指到无效位置

使用特权

评论回复
5
tjx727| | 2010-3-27 15:44 | 只看该作者
Prints("test",1);

你试试这样看看行不行,uint8 test[]="test";
Prints(test,1);

要是这样行的话那跟我的问题就一样了,呵呵……

使用特权

评论回复
6
isbit|  楼主 | 2010-3-29 09:55 | 只看该作者
LS
你试试这样看看行不行,uint8 test[]="test";
Prints(test,1);
这样可以,我已经试过了,但占用内存大;
我想这样写:Prints("test",1); 但是乱码;
我在51上就是这样写的,为什么pic编译器就不行呢,晕!

使用特权

评论回复
7
tjx727| | 2010-3-29 13:05 | 只看该作者
先别着急,藐视我找到了一个方法,只是得到一个提示,还没有试验,等我试验了,有效果再告诉你啊。
同是天涯沦落人啊!呵呵

使用特权

评论回复
8
tjx727| | 2010-3-30 12:15 | 只看该作者
目前想出来的方法:
#include <stdio.h>
printf("\rPress a key and I will echo it back:\n");
void putch(unsigned char byte)
{
        /* output one byte */
        while(!TXIF)        /* set when register is empty */
                continue;
        TXREG = byte;
}
这样就可以打印出任意长度的字符串,但是有一个问题,发送字符串的时候不能出现中断,要是出现中断就会打断打印,并且后面没有打印出来的也不会继续打印,不清楚是什么原因。
哎,看样子PIC单片机的指针不是很好用啊,幸好我要串口显示的东西不多,楼主要是显示的东西多,就禁用中断了 再打印吧,然后开中断.我就懒得麻烦了,直接一个个输出去算了,只是想弄明白到底是怎么回事!
希望能够对楼主有所帮助!

使用特权

评论回复
9
isbit|  楼主 | 2010-3-30 17:13 | 只看该作者
谢谢tjx727,我用你的方法测试一下先;
PIC怎么有这个问题呢,貌似全世界只有我们两个发现这个问题啊,哈哈

使用特权

评论回复
10
tjx727| | 2010-3-31 10:04 | 只看该作者
不客气

使用特权

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

本版积分规则

194

主题

963

帖子

1

粉丝