打印
[PIC®/AVR®/dsPIC®产品]

PIC串口打印问题

[复制链接]
2451|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vincentwang|  楼主 | 2014-12-17 15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 vincentwang 于 2014-12-18 17:21 编辑

最近用PIC18,要实现printf功能,但是死活不行,网上能搜到的方法都试过,不知道怎么回事,求高手指点一下!
补充说明一下:
1.用的是PIC18F87K90 + MPLAB X IDE + XC8
2.用串口接收和发送字节都没问题,但是调用printf就没任何反应(RS232到PC上的串口助手)。
3.已改写底层输出函数如下:
// 实现printf功能

void putch(unsigned char byte)
{
        /* output one byte */
    while(!TX2IF)        /* set when register is empty */
                continue;
        TXREG2 = byte;
}

unsigned char getch(void)
{
        /* retrieve one byte */
        while(!RC2IF)        /* set when register is not empty */
                continue;
        return RCREG2;
}

unsigned char getche(void)
{
        unsigned char c;
        putch(c = getch());
        return c;
}
沙发
纯金属| | 2014-12-17 15:45 | 只看该作者
printf怎么写的?

使用特权

评论回复
板凳
vincentwang|  楼主 | 2014-12-18 09:12 | 只看该作者
纯金属 发表于 2014-12-17 15:45
printf怎么写的?


请问Printf也需要自己改写吗?还是定义好PUTCH后就可以直接调用了?
我写的简单的测试程序如下:
中间注释掉的都可以正常发送,就是printf("test\r\n");没有任何反应,求高手指点一下

int main(int argc, char** argv)
{
    u8 i;
    DevInit();
    while(1)
    {
       DelayMS(100);
       //Uart485_SendBuf(UartTestBuf, 10);
       //Uart232_SendBuf(UartTestBuf, 10);
       printf("test\r\n");
       DelayMS(100);
    }
}

使用特权

评论回复
地板
纯金属| | 2014-12-31 14:23 | 只看该作者
有时候是编译器的问题,换成XC8试试

使用特权

评论回复
5
n85gzj| | 2015-5-28 16:46 | 只看该作者
楼主你好,请问PIC的Printf,怎么使用,在XIDE上面,用XC16

使用特权

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

本版积分规则

5

主题

11

帖子

0

粉丝