在使用printf函数之前需要注意亮点,一是调用头文件stdio.h,二是重定义putchar发送单个字符函数。这一点和MDK中开发AMR处理器不太一样,后者重定义的函数名fputc。

写个测试程序,不断通过串口发送一个字符串:

#include <STC15F2K60S2.H>
#include "stdio.h"
#include "intrins.h"void Delay1000ms(void);
void UartInit(void);void main(void)
{UartInit();for(;;){printf("Hello, STC!\r\n");Delay1000ms();}
}void UartInit(void)        //9600bps@11.0592MHz
{SCON = 0x50;        //8位数据,可变波特率AUXR |= 0x01;        //串口1选择定时器2为波特率发生器AUXR |= 0x04;        //定时器2时钟为Fosc,即1TT2L = 0xE0;        //设定定时初值T2H = 0xFE;        //设定定时初值AUXR |= 0x10;        //启动定时器2
}char putchar(char ch)
{SBUF = ch;while(TI == 0);TI = 0;return ch;
}void Delay1000ms(void)        //@11.0592MHz
{unsigned char i, j, k;_nop_();_nop_();i = 43;j = 6;k = 203;do{do{while (--k);} while (--j);} while (--i);
}

效果如下,可以看到实现预期功能:

以输出int型变量为例:

格式 含义 针对类型
%bd 单字节变量 char
%d 两字节变量 int
%ld 四字节变量 long int

其他变量类型输出格式含义

Type Argument Type Input Format
d int Signed decimal number.
u unsigned int Unsigned decimal number.
o unsigned int Unsigned octal number.
x unsigned int Unsigned hexadecimal number using “0123456789abcedf”.
X unsigned int Unsigned hexadecimal number using “0123456789ABCDEF”.
f float

Floating-point number formatted as<[>-<]>dddd.dddd.

%.1f(输出保留1位小数)

e float Floating-point number formatted as<[>-<]>d.dddde<[>-<]>dd.
E float Floating-point number formatted as<[>-<]>d.ddddE<[>-<]>dd.
g float Floating-point number using either the e or f format, whichever is more compact for the specified value and precision.
G float Floating-point number using either the E or f format, whichever is more compact for the specified value and precision.
c char A single character.
s * A string of characters terminated by a null character (‘\0’).
p * A generic pointer formatted as t:aaaa where t is the memory type and aaaa is the hexadecimal address.

以输出浮点数举例

printf("tempX=%f\r\n",tempX);

输出效果如下:

keil C51使用printf函数相关推荐

  1. printf()输出格式详解(Keil C51 、标准C)

    1.printf()简介 printf() 是 式样化 输出函数, 简单说 就是 规定式样输出消息 的函数. printf() 是 C语言标准库函数,用于将格式化后的字符串输出到标准输出(即标准输出文 ...

  2. 单片机c语言printf怎么用,如何在单片机上使用printf函数

    当我们在调试代码时,通常需要将程序中的某个变量打印至PC机上,来判断我们的程序是否按预期的运行,printf函数很好的做到了这一点,它能直接以字符的方式输出变量名和变量的值,这样使输出的信息很直观:但 ...

  3. c51语言bit函数,keil C51中的本征函数库及使用说明

    本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL 来实现(无需堆栈操作?),可大大提高函数的访问效率. 函数原型 extern void  ...

  4. keil c51的内部RAM(idata)动态内存管理程序(转)

    源:keil c51的内部RAM(idata)动态内存管理程序 程序比较简单,但感觉比较有意思,个人认为有一定应用价值,希望大家有更好的思路和方法,互相促进. 程序的基本思路是:在CPU堆栈指针SP以 ...

  5. Keil C51的库函数

    转自:http://www.dwenzhao.cn/profession/mcu/mcu51clib.html Keil C51有丰富的可直接调用的库函数,灵活使用库函数可使程序代码简单.结构清晰,并 ...

  6. Keil C51教程

    第三课 C51数据类型 作者:    来源:本站原创    点击数: <script src="http://www.51hei.com/Article/GetHits.asp?ID= ...

  7. 根据c51程序改写汇编语言,Keil C51编译及连接技术

    主要介绍Keil C51的预处理方法如宏定义.常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现. 教学目 ...

  8. Keil C51程序设计

    转载地址:http://www.dwenzhao.cn/profession/mcu/mcu51keilc.html Keil C51是一种专为8051系列单片机设计的C编译器,支持符合ANSI标准的 ...

  9. ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...

最新文章

  1. 解决springboot读取jar包中文件的问题
  2. ES6入门之对象扩展
  3. 关于库存 库存BAPI
  4. ssh图片上传 java_ssh上传并显示图片
  5. eclipse的workset项目重复显示解决方案
  6. 修复远程过程调用 (RPC) 时发生的各种问题KB908521
  7. 新手使用GitHub客户端提交项目的步骤
  8. 天池 在线编程 最大得分(DP)
  9. 那些年我们追过的计算机经典书
  10. c如何调用java_JNI学习------C语言调用Java (转)
  11. Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式
  12. MyBatis的优化
  13. 将SQL Server数据库备份到多个文件或从多个文件还原
  14. redis 辅助工具包 - redis-aux
  15. SQL server置疑数据库修复
  16. php和apache配置 LoadModule php5_module D:/php/php5apache2.dll
  17. 三维可视化JavaScript组件接口
  18. c语言中girth的作用,C语言课后习题及答案
  19. 研大考研:只办最好的集训营
  20. 3D图形渲染及数字图像处理算法相关文集

热门文章

  1. 07-搭建微服务-链路追踪Sleuth
  2. 求助!KMV信用风险模型Python版的报错问题
  3. 运用“孤独九剑”解决项目实际问题(一)
  4. iOS 远程消息推送,原理和开发详解篇(新手推荐)
  5. 2023就要你换个方式过新年!富而喜悦一年一渡开启新方式!
  6. PCB中过孔和通孔焊盘的区别
  7. DMAIC方法的五个步骤
  8. 刺激战场—scrapy+selenium中间件+数据分析-带妹吃鸡正确方式
  9. gizzard mysql_【MongoDB】在window系统下搭建MongoDB的分片系统(一)
  10. cmake使用教程(实操版)