首页 > 其他分享 >【STC8H】KEIL C51使用标准printf输出数值不对解决方法

【STC8H】KEIL C51使用标准printf输出数值不对解决方法

时间:2024-10-26 14:10:11浏览次数:5  
标签:表示 输出 C51 KEIL 浮点数 整数 STC8H printf 对齐

KEIL里扩展出了b,h,l来对输入字节宽的设置:
(1)b八位
(2)h十六位(默认)
(3)l三十二位

在Keil C51中用printf输出一个单字节变量时要使用%bd,如
unsigned char counter;
printf(“Current count: %bd\n”, counter);//输出8位”十进制有符号整数”
printf(“Current count: %bx\n”, counter);//输出8位”无符号以十六进制表示的整数”

而在标准C语言中都是使用%d:
printf(“Current count: %d\n”, counter);

  1. 格式化规定符
    Turbo C2.0提供的格式化规定符如下:
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    符号 作用
    ──────────────────────────
    %d 十进制有符号整数
    %u 十进制无符号整数
    %f 浮点数
    %s 字符串
    %c 单个字符
    %p 指针的值
    %e 指数形式的浮点数
    %x, %X 无符号以十六进制表示的整数
    %0 无符号以八进制表示的整数
    %g 自动选择合适的表示法
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    说明:
    (1). 可以在”%”和字母之间插进数字表示最大场宽。
    例如: %3d 表示输出3位整型数, 不够3位右对齐。
    %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
    小数点占一位, 不够9位右对齐。
    %8s 表示输出8个字符的字符串, 不够8个字符右对齐。
    如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
    但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
    若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
    另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
    例如: d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
    如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,
    小数点前的数字代表最小宽度。
    例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则
    第9个字符以后的内容将被删除。
    (2). 可以在”%”和字母之间加小写字母l, 表示输出的是长型数。
    例如: %ld 表示输出long整数
    %lf 表示输出double浮点数
    (3). 可以控制输出左对齐或右对齐, 即在”%”和字母之间加入一个”-” 号可
    说明输出为左对齐, 否则为右对齐。
    例如: %-7d 表示输出7位整数左对齐
    %-10s 表示输出10个字符左对齐
  2. 一些特殊规定字符
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    字符 作用
    ──────────────────────────
    \n 换行
    \f 清屏并换页
    \r 回车
    \t Tab符
    \xhh 表示一个ASCII码用16进表示,
    其中hh是1到2个16进制数
    ━━━━━━━━━━━━━━━━━━━━━━━━━━

标签:表示,输出,C51,KEIL,浮点数,整数,STC8H,printf,对齐
From: https://www.cnblogs.com/FBsharl/p/18504019

相关文章

  • 【STC8H】使用ADC第15通道测量外部电压及电池电压详解
     STC8H系列ADC的第15通道用于测量内部参考信号源,由于内部参考信号源很稳定,约为1.19V,且不会随芯片的工作电压的改变而变化,所以可以通过测量内部1.19V参考信号源,然后通过ADC的值便可反推出外部电压或外部电池电压。以下是如何设置和读取ADC第15通道的详细步骤: 1......
  • Keil C51 9.61__官网“最新版“下载、安装及相关提示( 保姆级教程, 安装过程详解, 附
     前言Keil5常用的分两个版本,C51 和MDK。C51用于编译8051内核的单片机程序,譬如AT89C51、STC89C51、STC98C52等。MDK用于编译STM32、GD32等ARM32位内核单片机程序。‌KeilC51‌是由KeilSoftwareCompany开发的,专门用于8051微控制器的软件开发系统。它支持8051系列的所有......
  • keil里面如何将AD采集后的数据给导出。
    最近在做STM32的ADC采集,遇到了一个问题,采集的数据出来要加一个滤波器让数据更加准确,滤波器的程序写完之后,想看一下是否正确,于是又给程序加了一个高频信号一个低信号看看滤波器是否成功,但是这里不知道怎么看滤波后数组内的数据,上网找了一下太多太杂,于是自己整理了一下。第一步:......
  • STM32基于CubeMX与Simulink的模块开发——Keil相结合(未解决)
    说明将Simulink和外置IDE结合起来,是方便习惯了代码开发的同学能更清晰和舒服的调试参考资料:Simulink自动代码生成电机控制:基于Keil软件集成-CSDN博客STM32CubeMX、keil、simulink联合开发MCU教程_simulinkinvalidindex-CSDN博客【Clion/keil+CubeMX+simulink模型化......
  • Keil 工程在编译完之后,会有相应的程序所占用的空间提示信息解释
    一般MCU包含的存储空间有:片内Flash与片内RAM,RAM相当于内存,Flash相当于硬盘。编译器会将一个程序分类为好几个部分,分别存储在MCU不同的存储区。Keil工程在编译完之后,会有相应的程序所占用的空间提示信息,如下所示:linking...ProgramSize:Code=48008RO-data=5660RW-d......
  • keil 快捷键设置,开发加速的小技巧(个人设置)
    点击扳手,选择shortcutkey进入快捷键设置页面跳到上一个光标的位置跳到下一个光标的位置跳转到定义(没办法实现组合鼠标按键,F12又太远,不过和QQ的截图热键冲突,需要修改QQ的快捷键,各有取舍吧)跳转到声明......
  • 一.利用Keil实现LED灯闪烁
    1.添加延迟函数的头文件2.编写main函数代码1.首先使用RCC开启GPIO的时钟,其次使用GPIO_Init函数初始化GPIO然后使用输出或者输入的函数控制GPIO口。兄弟闷儿可以选中该行代码Cral+f查看该函数定义,及GPIO结构体的参数。2.不清楚的话可以打开Library中找到rcc.h文件查看......
  • STM32单片机编程调试常见问题(二) Keil5软件调试中常见的配置问题
    文章目录一.概要二.‌Keil5‌调试时无法打断点并且部分代码语句执行被优化三.Keil5烧录STM32程序代码后无法自动复位四.Keil5调试时Watch界面中的变量不会实时更新五.Keil5编译后无法进行goto跳转到变量或函数六.Keil5编辑时注释输入中文显示乱码问号七.Keil5退出调试......
  • 基于AT89C51/STC89C52单片机的智能电子秤系统设计
    毕业论文:基于AT89C51/STC89C52单片机的智能电子秤系统设计摘要本文设计并实现了一种基于AT89C51/STC89C52单片机的智能电子秤系统,该系统集成了LCD1602显示模块、重量传感器(以HX711为例,实际设计中可用电位器模拟)、矩阵按键等硬件模块,旨在实现商品单价输入、重量采集、实时价格......
  • TMC5130—瑞士公司Thermoplan成功的基石
    瑞士的咖啡企业Thermoplan自1999年到现在就以开发设计和加工制作星巴克选用的咖啡机而广为人知,它生产制造的全自动化咖啡机在煮咖啡时近乎没有人为异常的空间。现今,凭借将独具匠心与最新技术相融在一起,任何一个杯子都将称得上Black&White4和LatteArtist锦上添花的精致冲泡产品。......