keil C51使用printf函数
在使用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函数相关推荐
- printf()输出格式详解(Keil C51 、标准C)
1.printf()简介 printf() 是 式样化 输出函数, 简单说 就是 规定式样输出消息 的函数. printf() 是 C语言标准库函数,用于将格式化后的字符串输出到标准输出(即标准输出文 ...
- 单片机c语言printf怎么用,如何在单片机上使用printf函数
当我们在调试代码时,通常需要将程序中的某个变量打印至PC机上,来判断我们的程序是否按预期的运行,printf函数很好的做到了这一点,它能直接以字符的方式输出变量名和变量的值,这样使输出的信息很直观:但 ...
- c51语言bit函数,keil C51中的本征函数库及使用说明
本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL 来实现(无需堆栈操作?),可大大提高函数的访问效率. 函数原型 extern void ...
- keil c51的内部RAM(idata)动态内存管理程序(转)
源:keil c51的内部RAM(idata)动态内存管理程序 程序比较简单,但感觉比较有意思,个人认为有一定应用价值,希望大家有更好的思路和方法,互相促进. 程序的基本思路是:在CPU堆栈指针SP以 ...
- Keil C51的库函数
转自:http://www.dwenzhao.cn/profession/mcu/mcu51clib.html Keil C51有丰富的可直接调用的库函数,灵活使用库函数可使程序代码简单.结构清晰,并 ...
- Keil C51教程
第三课 C51数据类型 作者: 来源:本站原创 点击数: <script src="http://www.51hei.com/Article/GetHits.asp?ID= ...
- 根据c51程序改写汇编语言,Keil C51编译及连接技术
主要介绍Keil C51的预处理方法如宏定义.常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现. 教学目 ...
- Keil C51程序设计
转载地址:http://www.dwenzhao.cn/profession/mcu/mcu51keilc.html Keil C51是一种专为8051系列单片机设计的C编译器,支持符合ANSI标准的 ...
- ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...
最新文章
- 解决springboot读取jar包中文件的问题
- ES6入门之对象扩展
- 关于库存 库存BAPI
- ssh图片上传 java_ssh上传并显示图片
- eclipse的workset项目重复显示解决方案
- 修复远程过程调用 (RPC) 时发生的各种问题KB908521
- 新手使用GitHub客户端提交项目的步骤
- 天池 在线编程 最大得分(DP)
- 那些年我们追过的计算机经典书
- c如何调用java_JNI学习------C语言调用Java (转)
- Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式
- MyBatis的优化
- 将SQL Server数据库备份到多个文件或从多个文件还原
- redis 辅助工具包 - redis-aux
- SQL server置疑数据库修复
- php和apache配置 LoadModule php5_module D:/php/php5apache2.dll
- 三维可视化JavaScript组件接口
- c语言中girth的作用,C语言课后习题及答案
- 研大考研:只办最好的集训营
- 3D图形渲染及数字图像处理算法相关文集