在C51单片机上使用printf函数
在Keil C51中这里的b表示byte,即1个字符,%bd就是输出一个byte宽度的整型数(char)。
#include <stdio.h>
void tst_printf (void) {
char a = 1;
int b= 12365;
long c = 0x7FFFFFFF;
unsigned char x = 'A';
unsigned int y= 54321;
unsigned long z = 0x4A6F6E00;
float f = 10.0;
float g = 22.95;
char buf [] = "Test String";//不定长数组
char *p = buf;
printf ("char %bd int %d long %ld\n",a,b,c);
printf ("Uchar %bu Uint %u Ulong %lu\n",x,y,z);
printf ("xchar %bx xint %x xlong %lx\n",x,y,z);
printf ("String %s is at address %p\n",buf,p);
printf ("%f != %g\n", f, g);
printf ("%*f != %*g\n", (int)8, f, (int)8, g);
}
那么这种整型数据是带符号的还是无符号的呢 这种表示方法是通用的吗 还是只适用于51单片机呢 输出一个byte宽度的无符号整型数,(unsigned char)。 %d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出
%.4f用来输出实数,保留小数点4位。
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。 一个单字节变量时要使用%bd
1.b八位
2.h十六位
3.l三十二位
%d 两个字节变量 int
%bd 单字节变量 char
%ld 四字节变量 long int bit、sbit、sfr和sfr16数据类型在ANSI c中没有提供,它们在Cx51编译器中是唯一的 scanf()和printf()是做什么的? 实现putchar函数将字符发送到串口,实现getchar函数从串口接收字符。 需要借助外部设备串口来实现printf函数的功能。 在实际的应用中,还需要根据实际情况设置波特率、端口等参数。 在C中,标准输入输出函数(printf, scanf等)的实现依赖于低层的IO函数 使用printf函数会消耗较多的程序代码空间和运行时间 51单片机用printf()函数输出数字到串口 对于资源受限的C51单片机,建议谨慎使用printf函数 使用标准输入输出函数在单片机上可能会带来一定的性能和资源开销。 重定义printf函数,重写putchar函数 在C51单片机上使用printf函数需要借助C语言标准库中的stdio.h头文件。 在程序中使用相应的控制指令,可以将调试信息直接显示在LED灯或LCD屏幕上。 C51单片机并不直接支持标准的printf函数