51单片机第2步_printf()函数应用

在51单片机中,printf()函数是最常用的函数。

#include <REG51.h> //包含头文件REG51.h,使能51内部寄存器;

#include <stdio.h> //包含头文件stdio.h

//_getkey();从串口读入一个字符;

signed char Char_Value;

signed int Int_Value;

signed long Long_Value;

float Float_Value;

unsigned char Char_type_value;

char Buffer\[\]="7890";

//函数功能:初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

void Serial_Port_Initialization()

{ SCON = 0x50; //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI

//SM1:SM0=01,选择方式1,SM2=0,表示非多机通讯,8-bit UART;

//REN=1,使能接收;

TMOD |= 0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00

//GATE=0,TR置1便可以启动Timer;GATE=1,TR置1,且INT脚输入高电

//平,才可以启动Timer;

//M11:M10=10,选择方式2,8位自动重装载;

TH1 = 221; //TH1: reload value for 1200 baud @ 16MHz

TR1 = 1; //启动Timer1;

TI = 1; //发送UART的第一个字节,为下次发送做准备;

}

void main(void)

{

Serial_Port_Initialization();

//初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

for(;;)

{ Char_Value=-100;

printf("Char_Value=%bd\n",Char_Value);

//将字节型的值转换为有符号十进制数输出,"Char_Value=-100";

Char_Value=100;

printf("Char_Value=%bu\n",Char_Value);

//将字节型的值转换为无符号十进制数输出,"Char_Value=100";

Char_Value=100;

printf("Char_Value=%#bX\n",Char_Value);

//将字节型的值转换为无符号16进制ASCII码输出,"Char_Value=0X64"

printf("Char_Value=%bX\n",Char_Value);

//将字节型的值转换为无符号16进制ASCII码输出,"Char_Value=64"

Int_Value=-1000;

printf("Int_Value=%d\n",Int_Value);

//将双字节型的值转换为有符号十进制数输出,"Int_Value=-1000";

Int_Value=1000;

printf("Int_Value=%u\n",Int_Value);

//将双字节型的值转换为无符号十进制数输出,"Int_Value=1000";

Long_Value=1000000000;

printf("Long_Value=%Ld\n",Long_Value);

//将4字节型的值转换为无符号十进制数输出,"Long_Value=1000000000";

printf("Long_Value=%LX\n",Long_Value);

//将4字节型的值转换为无符号16进制ASCII码输出,"Long_Value=3B9ACA00";

Long_Value=-1000000000;

printf("Long_Value=%Ld\n",Long_Value);

//将4字节型的值转换为有符号十进制数输出,"Long_Value=-1000000000";

printf("Long_Value=%LX\n",Long_Value);

//将4字节型的值转换为有符号十进制数输出,"Long_Value=C4653600";

Float_Value=100.991;

printf("Float_Value=%8.3f\n",Float_Value);

//将浮点数转换为十进制ASCII码输出,"Float_Value=100.991";

printf("Float_Value=%e\n",Float_Value);

//将浮点数转换为ASCII码输出,"Float_Value=1.00991e+02";

Char_type_value=0x30;

printf("Char_type_value=%c\n",Char_type_value);

//将字节型的值转换为字符输出,"Char_type_value=0";

Char_type_value=0x31;

printf("Char_type_value=%c\n",Char_type_value);

//将字节型的值转换为字符输出,"Char_type_value=1";

Char_type_value=0x32;

printf("Char_type_value=%c\n",Char_type_value);

//将字节型的值转换为字符输出,"Char_type_value=2";

printf("Buffer\[\]=%s\n",Buffer);

//将Buffer\[\]中的字符串通过串口发送出去,"Buffer\[\]=7890";

printf("The first address of Buffer array=%p\n",Buffer);

//"The first address of Buffer array=i:000f";

}

相关推荐
智购科技无人售货机厂家39 分钟前
自动售货机物联网平台为什么会出现在线状态不一致?~YH
python·单片机·嵌入式硬件·django·pygame
zhangrelay9 小时前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
comyccccc10 小时前
STM32F103C8T6最小系统板设计全解析学习笔记
单片机·1024程序员节
Industio_触觉智能10 小时前
把NPU检测直接嵌进采集终端|RK3576 AI采集终端全链路拆解教程-下
嵌入式硬件·ai·硬件架构·npu·ai视觉·rk3576·采集终端
en.en..11 小时前
STM32 GPIO ODR 与 BSRR 寄存器完整对比详解
单片机·嵌入式硬件
HQB202613 小时前
EG1182|屹晶微电子 60V 内置高压管异步降压 DC‑DC
嵌入式硬件·硬件工程
LCG米15 小时前
STM32硬件SPI驱动SSD1306 OLED实测:上电黑屏排查、页寻址模式与取模扫描方向陷阱
stm32·单片机·嵌入式硬件·嵌入式
深圳老胡16 小时前
STM32C5A3ZG 网络调试总结:从启动失败到连续 Ping 稳定
笔记·stm32·单片机·代码规范
硅基造物主16 小时前
STM32 从 0 到 1 做智能家居(八):PWM 控制风扇、加热片与 SG90 窗帘
stm32·嵌入式硬件·智能家居·hal库·pwm
简单电磁炮16 小时前
关于adc采集
stm32·单片机