一直用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条评论)
登录后参与讨论