c51中 printf怎用

如题所述

是这样的,keil的stdio.h提供了一堆函数,大致分两类,一类是通过串口在上位机上输入输出,另一类是指定一个指针变量,向其输入输出,这样便可以将得到的字符数组指针的内容输出到LCD一类设备上了,也可通过指针获得按键输入。
对于一类,你必须得软件初始化串口,硬件与电脑连接好,然后利用windows的超级终端就可以显示单片机中程序里的printf等函数打印出的内容了,你也可以使用getchar获得超级终端的按键码。(当然也可以使用串口助手之类软件代替超级终端,注意波特率,数据位,校验位,等设置要保持一致)
对于第二类,是不用初始化串口的,因为跟串口没任何关系,你只要用指针虚拟设备就可以了,输入输出都是你自己做的硬件。
附串口初始化程序:
#define T1_INIT_VALUE 0x0D //定时器1初始值设定 9600bps@11.0592MHz
void UartInit(void) {
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = T1_INIT_VALUE; //设定定时初值
TH1 = T1_INIT_VALUE; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES = 0; //禁止串行口中断
TI = 1; //必须置高TI,RI
RI = 1;
puts("Uart Initialize Success!");
// *.调用printf之前应该关闭串口中断使能
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-22
一个是输出函数 一个是输入函数
第2个回答  2011-09-21
通过lcd,led,还是点阵显示?追问

谢谢您的回答,是led数码管显示的

第3个回答  2011-09-21
与微机上一样,只不过事先要初始化串口
keil中有例子

printf()输出格式详解(Keil C51 、标准C)
printf()函数,作为C语言的核心输出工具,其核心功能是按照指定的格式将数据输出到标准输出,如终端屏幕。这个函数定义在stdio.h头文件中,其基本调用格式为:printf("格式化字符串", 输出参数)。格式化字符串由三部分构成:首先,字符串常量,直接输出其内容;其次,格式控制字符串,以%开头,用于定义输出...

c51语言中,printf函数有什么用?
打印,就是输出一个语句!比如printf(“Hello word!”);里面可以是字符串,可以是变量!

keil c51仿真时,怎样使用printf函数输出一个两位16进制数?
我在很久以前用printf输出过自制并行口数据,我相信此方法可行:printf(0x**,0x16),其中**表示地址,我已经有十年没编程了,据现在的情况发展不是很快,此法应该可以。注意在用的过程中要和缓冲器的关系处理好!试试吧,祝你成功。

c51语言中,printf函数有什么用?
打印,就是输出一个语句!比如printf(“Hello word!”); 里面可以是字符串,可以是变量!

C51的scanf()和printf()是做什么的?
printf()是以规定的格式向单片机的串口输出数据 原型如下: extern int printf (const char *, ...);const char *是格式控制字符串指针,必须以%开始, %[flags][width][.precision]][modified] type scanf()函数是依规定的格式从串口输入数据,extern int scanf( const char * , ...)与...

STC51单片机用printf()函数输出数字到串口,
查C51关于printf的帮助文档:d 是处理int数据的,如果是char的看这句:The optional characters b or B may immediately precede the type character to respectively specify char types for d, i, u, o, x, and X.也就是要改为这样:printf("num = %bd",num);...

keil c51 printf 问题
在程序中,你需要配置串口的,虽然是仿真,也要初始化串口,keil仿真只不过相当于给了你硬件而已。在keil中printf 默认是向串口中发送数据的,所以,如果应用该函数,必须先初始化串口,否则可能引起死机的情况,并且在printf之前应该先将TI置位,参考资料:http:\/\/blog.csdn.net\/lizhoubob\/archive\/2010\/07\/...

单片机C8051在Keil C51环境下使用printf函数打印,发现打印值和实际不...
也就是说,使用C51的printf()函数打印%d\/i\/u\/o\/x\/X格式时,你必须要指定该变量的存储格式l\/L\/b\/B。由于你的变量c为char类型,因此可将相应的代码改为如下:printf("%bd\\n",c);printf("%bu\\n",c);printf("%bx\\n",c);即可得到正确的结果。另:若变量c为uint16时,则需将%bd等改为...

c51语言中,printf函数有什么用?
使用了该函数目标代码要大好几K,对于仅有几k代码的51单片机来说是很难吃得消的,代码大的原因主要是因为它带了一个浮点运算库,也正因为此原因,运行printf()时速度也不是很快。我平时是主张尽量以最少的资源完成最多的任务的,所以不再用该函数,而是用一系列自己编的函数集来代替。

51单片机 串口用 printf输出 ,当输出的数据类型是unsigned char的时候...
h,l来对输入字节宽的设置:(1)b八位 (2)h十六位 (3)l三十二位 在Keil C51中用printf输出一个单字节变量时要使用%bd,如 unsigned char counter;printf("Current count:bd\\n",counter);而在标准C语言中都是使用%d:printf("Current count:d\\n",counter);希望对你有帮助。

相似回答