在C51语言中,它本身不提供输入和输出语句,输入和输出操作是由函数来实现的。在C51的标准函数库中提供了一个名为“stdio.h”的一般I/O函数库,它当中定义了C51中的输入和输出函数。当对输入和输出函数使用时,须先用预处理命令“#include ”将该函数库包含到文件中。
在C51的一般I/O函数库中定义的I/O函数都是通过串行接口实现,在使用I/O函数之前,应先对51单片机的串行接口进行初始化。选择串口工作于方式2(8位自动重载方式),波特率由定时器/计数器1溢出率决定。例如,设系统时钟为12MHZ,波特率为2400,则初始化程序如下:
SCON=0x52;
TMOD=0X20;
TH1=0xf3;
TR1=1;
1. 格式输出函数printf()
printf()函数的的作用是通过串行接口输出若干任意类型的数据,它的格式如下:
printf(格式控制,输出参数表)
格式控制是用双引号括起来的字符串,也称转换控制字符串,它包括三种信息:格式说明符、普通字符和转义字符。
(1)格式说明符,由“%”和格式字符组成,它的作用是用于指明输出的数据的格式输出,如%d、%f等,它们的具体情况见下表。
(2)普通字符,这些字符按原样输出,用来输出某些提示信息。
(3)转义字符,就是前面介绍的转义字符(下表),用来输出特定的控制符,如输出转义字符n就是使输出换一行。
输出参数表是需要输出的一组数据,可以是表达式。
2. 格式输入函数scanf()
scanf()函数的作用是通过串行接口实现数据输入,它的使用方法与printf()类似,scanf()的格式如下:
scanf(格式控制,地址列表)
格式控制与printf()函数的情况类似,也是用双引号括起来的一些字符,可以包括以下三种信息:空白字符、普通字符和格式说明。
(1)空白字符,包含空格、制表符、换行符等,这些字符在输出时被忽略。
(2)普通字符,除了以百分号“%”开头的格式说明符而外的所有非空白字符,在输入时要求原样输入。
(3)格式说明,由百分号“%”和格式说明符组成,用于指明输入数据的格式,它的基本情况与printf()相同,具体情况见表4-5。
地址列表是由若干个地址组成,它可以是指针变量、取地址运算符“&”加变量(变量的地址)或字符串名(表示字符串的首地址)。
【例】 使用格式输入输出函数的例子
#include //包含特殊功能寄存器库
#include //包含I/O函数库
void main(void) //主函数
{
int x,y; //定义整型变量x和y
SCON=0x52; //串口初始化
TMOD=0x20;
TH1=0XF3;
TR1=1;
printf(“input x,y:n”); //输出提示信息
scanf(“%d%d”,&x,&y); //输入x和y的值
printf(“n”); //输出换行
printf(“%d+%d=%d”,x,y,x+y); //按十进制形式输出
printf(“n”); //输出换行
printf(“%xH+%xH=%XH”,x,y,x+y); //按十六进制形式输出
while(1); //结束
}
关键字:单片机 C语言 C51 输入输出
引用地址:
单片机C语言C51的输入输出
推荐阅读最新更新时间:2024-11-12 18:35
基于单片机的电机转速PID控制
0、引言&实验器材 2020的国庆节一个人呆在实验室有点无聊,翻了翻还未填上的坑,发现对PID的理解一直停留在纸面上,不曾在现实中的系统中实际操作过(倒立摆和小四轴这些DIY入门训练都还没完整的做过,实在不甘心),于是从零搭建实验平台,以便深入理解PID算法,最后便有了此篇博客,仅作为记录本人学习之用,如有错误,还望指出,谢谢。 由于使用的串口助手没有曲线绘制功能,故暂无实际效果图(PID参数效果通过时间计算比较) 以下为本次所使用的材料 1、PID算法 假设已对闭环控制有了最基本的认识(如无,可参考这篇文章),参考下图1可以得知,Setpoint为设定值(你所期望系统能达到的值),设定值和反馈值经过计算后得到当前Er
[单片机]
单片机读入4*4矩阵键盘
一、什么是矩阵键盘 矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4*4和8*8,其中用的最多的是4*4。 网上搜了两张实物图,大家可以看看 看上图就知道,4*4键盘还是很多地方用到的吧^_^ 二、矩阵键盘的原理 矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。 在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。 这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。由于单片机IO端口具 有线与的功能,因此当任意一个按键按下时
[单片机]
国民技术携MCU系列新品亮相ELEXCON 2019
嵌入式行业年度顶级盛会— 深圳国际电子展(ELEXCON 2019)于12月19日在深圳会展中心隆重启幕。国民技术股份有限公司(简称:国民技术)携带众多产品阵容参与盛会,包括通用MCU、安全芯片、可信计算、国民安全云等最新产品和解决方案。 国民技术1G08展台 与行业客户交流洽谈 在同期举办的第十一届MCU技术创新与应用大会上,国民技术产品执行总监钟新利分享题为“万物互联,安全为本 MCU产品策略暨新品发布”的主题报告。 钟新利介绍,国民技术凭借深耕信息安全IC领域近二十年的技术积累,洞察行业发展趋势,厚积薄发,全貌规划了全系列、全应用、全场景100+款MCU产品阵容,全系列产品兼具低功耗、高性能、高安
[嵌入式]
利用循环左移函数流水灯---单片机C语言编程
#include reg51.h #include intrins.h void delayms(unsigned char ms) // 延时子程序 { unsigned char i; while(ms--) { for(i = 0; i 120; i++); } } main() { unsigned char LED; LED = 0xfe; P0 = LED; while(1) { delayms(250); LED = _crol_(LED,1); //循环左移1位,点亮下一个LED P0 = LED; } }
[单片机]
keil中的单片机模块化编程
好的开始是成功的一半 通过上一章的学习,我想你已经掌握了如何在程序中释放CPU了。希望能够继续坚持下去。一个良好的开始是成功的一半。我们今天所做的一切都是为了在单片机编程上做的更好。 在谈论今天的主题之前,先说下我以前的一些经历。在刚开始接触到C语言程序的时候,由于学习内容所限,写的程序都不是很大,一般也就几百行而矣。所以所有的程序都完成在一个源文件里面。记得那时候大一参加学校里的一个电子设计大赛,调试了一个多星期,所有程序加起来大概将近1000行,长长的一个文件,从上浏览下来都要好半天。出了错误简单的语法错误还好定位,其它一些错误,往往找半天才找的到。那个时候开始知道了模块化编程这个东西,也尝试着开始把程序分模块编写。最开始
[单片机]
用GY30,LCD,89C52单片机显示光照强度
#include REG51.H #include math.h //Keil library #include stdio.h //Keil library #include INTRINS.H #define uchar unsigned char #define uint unsigned int #define DataPort P0 //LCD1602数据端口 sbit SCL=P1^0; //IIC时钟引脚定义 sbit SDA=P1^1; //IIC数据引脚定义 sbit LCM_RS=P1^2; //LCD1602命令端
[单片机]
汽车“新四化”大潮下,MCU冠军花落谁家?
汽车 微控制器 ( MCU )是 汽车电子 系统的核心部件,在汽车电动化、 智能化 、网联化、共享化的“新四化”趋势下,各大汽车厂商对于车用MCU的架构集成度、功能复杂度的要求持续上升,市场不断扩大。据了解,高端车型中每辆车用到的MCU数量接近100个,市调组织Yole发布的报告显示,2023年全球MCU市场规模约229亿美元,预计至2028年将以5.3%的年复合增速达到320亿美元。 身处这片红海,各大MCU厂商技术的创新和迭代也更加频繁。 车越智能 MCU越重要 在汽车技术的飞速发展中,微控制器单元(MCU)一直扮演着至关重要的角色。从发动机控制到车载娱乐系统,再到先进的驾驶辅助技术,MCU无处不在,默默地推
[汽车电子]
单片机系统低功耗设计策略
在嵌入式应用中,系统的功耗越来越受到人们的重视,这一点对于需要电池供电的便携式系统尤其明显。降低系统功耗,延长电池的寿命,就是降低系统的运行成本。对于以单片机为核心的嵌入式应用,系统功耗的最小化需要从软、硬件设计两方面入手。 随着越来越多的嵌入式应用使用了实时操作系统,如何在操作系统层面上降低系统功耗也成为一个值得关注的问题。限于篇幅,本文仅从硬件设计和应用软件设计两个方面讨论。 1 硬件设计 选用具有低功耗特性的单片机可以大大降低系统功耗。可以从供电电压、单片机内部结构设计、系统时钟设计和低功耗模式等几方面考察一款单片机的低功耗特性。 1.1 选用尽量简单的CPU内核 在选择CPU内核
[单片机]