赞
踩
在使用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,即1T
- T2L = 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);
输出效果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。