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

2011-1-5 20:59 2032 6 6 分类: MCU/ 嵌入式

一直用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

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条