搜索
bottom↓
回复: 5

ICC下自制printf调试方法[原创]

[复制链接]

出0入0汤圆

发表于 2009-12-15 09:56:14 | 显示全部楼层 |阅读模式
一直用ICC并未用其printf的方法调试程序,结果今天屡试不爽,发帖也无人应答,遂自制之:

调试需要包含两个文件:

debug.c

debug,h

代码如下:

debug.c

//--------------------------------------------------------------------------

#i nclude <iom128v.h>
#i nclude <macros.h>
#i nclude <stdlib.h>
#i nclude <string.h>

//#define COM0 

/* 字符输出函数*/
void zputchar(unsigned char c)
    {  
#ifdef COM0
     UDR0=c;  
      while(!(UCSR0A&0X40));                //已经发送
      UCSR0A|=0x40;   
#else
     UDR1=c;  
      while(!(UCSR1A&0X40));                //已经发送
      UCSR1A|=0x40;
#endif
    }

/* 字符输入函数*/  
unsigned char zgetchar(void)
    {
#ifdef COM0
         while(!(UCSR0A& (1<<RXC0)));
         return UDR0;
    #else
        while(!(UCSR1A& (1<<RXC1)));
         return UDR1;
#endif
    }         
/* 字符串输出函数*/   
int zputs(char *s)
    {
    while (*s)
        {
           zputchar(*s);
           s++;
        }   
    return 1;
    }   
//字符串输出
void zprintf(char *s,int x)
    {
    char s1[4];
    char s2[20];
    char *s3="\r\n";
    memset(s2,0,20);
    memset(s1,0,4);
    if(x!=0)
    ltoa(s1,x,10);
   
    strcat(s2,s);
    strcat(s2,s1);
    strcat(s2,s3);
    zputs(s2);  
    }   

//-----------------------------------------------------------------------------------

debug.h

#define  DEBUG
//字符串输出
extern void zprintf(char *s,int x);

//---------------------------------------------------------------------------------

说明:输出口的选择在debug.c 中,注释掉#define COM0 将选择COM1;否则选择COM0;

调试是的调用方法如下例子所示:

void   main()

{

    /*串口初始化代码*/

   while(1)

{

  #ifdef DEBUG
  zprintf("temp=",20);
zprintf("hello\r\n",0);
  #endif

}

}

欢迎转载。  51FLY  2009.12.13

出0入296汤圆

发表于 2009-12-15 10:06:28 | 显示全部楼层
赞一个!尝试加入对可变参数列表的支持。

出0入0汤圆

发表于 2009-12-15 10:09:46 | 显示全部楼层
还不如直接用printf

出0入0汤圆

 楼主| 发表于 2009-12-15 10:31:29 | 显示全部楼层
请问楼上,我的printf 为哈用不起来,没有输出??但是单个的putchar却能输出;ICC编译环境

出0入0汤圆

发表于 2010-8-15 16:01:12 | 显示全部楼层
COOL

出0入0汤圆

发表于 2010-8-15 16:54:13 | 显示全部楼层
http://www.menie.org/georges/embedded/#printf

我用过,挺好。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 13:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表