STC15-串口通信打印输出数据printf函数与sprintf函数

STC15-串口通信打印输出数据printf函数与sprintf函数

  • 1.打印输出数据有二种printf函数与sprintf函数,不同之处有:
    • (1)函数的声明不同
    • (2)函数的功能不同
    • (3)用法举例

该问题引用百度知道下面该出处的链接:

https://zhidao.baidu.com/question/403268801.html

用串口1输出数据时遇到的问题:

1.打印输出数据有二种printf函数与sprintf函数,不同之处有:

(1)函数的声明不同

int printf(const char *format [, argument]...);
int sprintf(char *buffer, const char *format [, argument] ...);

sprintf比printf多一个参数buffer,这个参数的作用见(2)的描述。

(2)函数的功能不同

函数printf(…)根据指定的格式(format)将参数(argument)输出到屏幕上;
函数sprintf(…)根据指定的格式(format)将参数(argument)输出到由指针buffer指定的字符数组(字符缓冲区)中;

(3)用法举例

#include <stdio.h>
void main()
{/*字符数组buffer用于存放sprintf函数的输出*/char buffer[256]; int x = 100;char *message = "Hello world";/* 用sprintf函数将x和message输出到字符数组buffer中 */sprintf(buffer, "%s%d", message, x);/* 用printf函数将buffer的内容输出到屏幕上显示 */printf("%s\n", buffer);   
}

粘贴上STC15串口初始化代码:


/**************************************************************************** 描  述 : 串口1初始化函数  * 入  参 : 无* 返回值 : 无
备注:波特率9600bps   晶振11.0592MHz**************************************************************************/
void Uart1_Init(void)
{	P_SW1&=0X3F;     //选择P30 P31为串口1PCON &= 0x3f;		//波特率不倍速,串行口工作方式由SM0、SM1决定SCON = 0x50;		//8位数据,可变波特率,启动串行接收器AUXR |= 0x40;		//定时器1时钟为Fosc,即1TAUXR &= 0xfe;		//串口1选择定时器1为波特率发生器TMOD &= 0x0f;		//清除定时器1模式位TMOD |= 0x20;		//设定定时器1为8位自动重装方式TL1 = 0xDC;		  //设定定时初值TH1 = 0xDC;		  //设定定时器重装值ET1 = 0;		    //禁止定时器1中断TR1 = 1;		    //启动定时器1ES = 1;         // 串口1中断打开}/**************************************************************************** 描  述 : 串口1发送数据函数* 入  参 : uint8 数据* 返回值 : 无**************************************************************************/
void SendDataByUart1(uint8 dat)
{SBUF = dat;                 //写数据到UART数据寄存器while(TI == 0);             //在停止位没有发送时,TI为0即一直等待TI = 0;                     //清除TI位(该位必须软件清零)
}/**************************************************************************** 描  述 : 串口1发送字符串函数* 入  参 : uint8 *s 待发送字符串 * 返回值 : 无**************************************************************************/
void SendStringByUart1(uint8 *s)
{while(*s){SendDataByUart1(*s++);       //将字符串中的字符一个一个发送}
}/**************************************************************************** 描  述 : 重定向c库函数printf到USART1* 入  参 : char dat* 返回值 : char **************************************************************************/
char putchar(char dat)
{SendDataByUart1(dat);           return dat;                    
}/**************************************************************************** 描  述 : 串口1中断服务函数* 入  参 : 无* 返回值 : 无**************************************************************************/
void Uart1() interrupt UART1_VECTOR using 1
{ES = 0;  	                  // 串口1中断关闭if (RI)                     //串行接收到停止位的中间时刻时,该位置1{RI = 0;                 //清除RI位 (该位必须软件清零)}if (TI)                    //在停止位开始发送时,该位置1{TI = 0;                 //清除TI位(该位必须软件清零)}ES =  1;                   // 串口1中断打开
}/*********************************END FILE********************************************/	

下面简介各个寄存器的作用
1.串行口1的控制寄存器SCON和PCON
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.串行口数据缓冲寄存器SBUF
在这里插入图片描述
3.辅助寄存器AUXR
在这里插入图片描述
在这里插入图片描述
4.定时器2的寄存器T2H,T2L
在这里插入图片描述
5.从机地址控制寄存器SADEN和SADDR
在这里插入图片描述
6.与串行口1中断相关的寄存器位ES和PS
在这里插入图片描述
7.将串口1进行切换的寄存器AUXR1(P SW1)
在这里插入图片描述
在这里插入图片描述
8.串口1的中继广播方式设置位一Tx_Rx/CLK_DIV4
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2的幂运算

2的幂 描述 : 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 题目 : LeetCode 231.2的幂 : 231. 2 的幂 分…

SpringBoot中的部分注解

1.SpringBoot/spring SpringBootApplication: 包含Configuration、EnableAutoConfiguration、ComponentScan通常用在主类上&#xff1b; Repository: 用于标注数据访问组件&#xff0c;即DAO组件&#xff1b; Service: 用于标注业务层组件&#xff1b; RestController: 用…

中国毫米波雷达产业分析3——毫米波雷达市场分析(四、五、六)

四、康养雷达市场 &#xff08;一&#xff09;市场背景 1、政府出台系列政策提升智慧健康养老产品供给和应用 康养雷达是一种以老年人为主要监测对象&#xff0c;可以实现人体感应探测、跌倒检测报警、睡眠呼吸心率监测等重要养老监护功能的新型智慧健康养老产品。 随着我国经…

商家门店小程序怎么做?门店小程序的优势和好处

生活服务类商家在当前数字化时代&#xff0c;越来越认识到门店小程序的重要性。门店小程序不仅为商家提供了一个在线展示的窗口&#xff0c;更为其打造了一个与消费者直接互动的平台。有了门店小程序&#xff0c;商家可以更加便捷地管理商品信息、订单流程&#xff0c;同时还能…

HX3002入耳检测光感驱动调试-感0x08 寄存器溢出,不变化错误问题解决方法

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 读取光感0x08 寄存器溢出,不变化错误问题?原因 原因:没有读取到0x08数据,没有读0x…

【数据结构和算法】确定两个字符串是否接近

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1操作 1 的本质&#xff1a;字符可以任意排列 2.2操作 2 的本质&#xff1a;出现次数是可以交换的 2.…

传统算法:使用Pygame实现SVM(支持向量机)算法

使用 Pygame 演示了支持向量机(SVM)在二维数据上的分类过程。以下是代码的主要步骤和原理解释: 1、初始化和基本设置 Pygame 初始化: 通过 pygame.init() 初始化 Pygame。 定义颜色和屏幕大小: 定义了一些颜色常量(WHITE, BLACK, RED, BLUE)和屏幕的宽度和高度。 创建…

C语言二叉树与堆的实现(一)

目录 二叉树 二叉树的分类&#xff08;目前只谈两种&#xff09; 满二叉树 完全二叉树 二叉树的性质&#xff08;其余的可以自己总结&#xff09; 选择练习 二叉树的存储结构 顺序存储方式 链式存储方式 一种完全二叉树&#xff1a;堆 堆的概念 堆的性质 建堆的时…

QtCMake工程提升类后找不到头文件

我们都知道qt6版本现在主推用cmake进行构建工程&#xff0c;但是使用Qt的ui文件后想要自己定义一个类然后提升界面的控件为这个类&#xff0c;通常会提示找不到头文件&#xff0c;出现问题的原因是Qt creator通过ui文件生成的程序和存放头文件的目录不在一起&#xff0c;但是生…

python第2天之变量类型及其对应的方法整合

前言 查看变量类型&#xff1a;type(变量) Python是一种动态类型语言&#xff0c;它具有丰富的变量类型和对应的方法。在Python中&#xff0c;我们可以根据变量的类型来选择合适的方法来操作这些变量。 下面将介绍一些常见的变量类型及其对应的方法。 一、整型&#xff08;…

JAVA调优

1 JAVA虚拟机 1.1 基本组成 通常来说Java平台标准版&#xff08;Java SE&#xff09;包括 Java SE开发工具包&#xff08;JDK&#xff09;和Java SE运行时环境&#xff08;JRE&#xff09;。 JRE提供了运行以Java编程语言编写的applet和应用程序所必需的库&#xff0c;Java虚…

Microsoft Expression Web - 网页布局

在本章中&#xff0c;我们将介绍网页的基本布局。在创建我们的网页布局之前&#xff0c;我们需要考虑我们的内容&#xff0c;然后设计我们希望如何呈现该内容&#xff0c;因为它是在我们的网站上可见的内容。 由我们如何呈现我们的内容&#xff0c;以便我们的观众找到我们的网…

pdfjs,pdf懒加载

PDF.js是一个使用JavaScript实现的PDF阅读器&#xff0c;它可以在Web浏览器中显示PDF文档。PDF.js支持懒加载&#xff0c;也就是说&#xff0c;它可以在用户滚动页面时才加载PDF文档的某些部分&#xff0c;从而减少初始加载时间和内存占用。 注意点&#xff1a;如果要运行在多留…

Python教程 – 简单代码实现HTML 转Word

之前文章分享过如何使用Spire.Doc for Python库将Word文档转为HTML格式&#xff0c;反过来&#xff0c;该库也能实现HTML到Word文档的转换。通过代码进行转换&#xff0c;避免了手动复制粘贴费时间&#xff0c;并且可能会出现错误或格式混乱等问题。 Spire.Doc for Python库能…

拥抱未来:大语言模型解锁平台工程的无限可能

01 了解大型语言模型 (LLM) 大型语言模型&#xff08;LLM&#xff09;是一种人工智能&#xff08;AI&#xff09;算法&#xff0c;它使用深度学习技术和海量数据集来理解、总结、生成和预测新内容。凭借合成大量信息的能力&#xff0c;LLM 可以提高以前需要人类专家的业务流程的…

每日一题 - 231201 - Divisibility by Eight

Divisibility by Eight TAG - 整除特性、枚举 整除特性、枚举 整除特性、枚举时间复杂度 - O ( N 3 ) O(N^3) O(N3) // #include<bits/stdc.h> using namespace std; // #define int long long void solve() {string s;cin>>s;for( int i0;i<s.size();i )if(…

基于ASP.Net的图书管理系统的设计与实现

摘 要 图书馆管理系统是一整套高科技技术与书本管理知识结合的产物。它把传统书籍静态的服务这个缺陷完美化&#xff0c;完成多媒体数据的交互、远程网络连接、检查搜索智能化、多数据库无障碍联系、跨时空信息服务。图书管理系统用计算机程序替代了传统手工记录的工作模式&am…

【PyTorch】(三)模型的创建、参数初始化、保存和加载

文章目录 1. 模型的创建1.1. 模型组件1.1.1. 网络层1.1.2. 激活函数1.1.3. 函数包1.1.4. 容器 1.2. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.3. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数 1. 模型的创建…

Ruby和HTTParty库下载代码示例

ruby require httparty require nokogiri # 设置服务器 proxy_host "" proxy_port "" # 定义URL url "" # 创建HTTParty对象&#xff0c;并设置服务器 httparty HTTParty.new( :proxy > "#{proxy_host}:#{proxy_port}" ) …

MySQL之binlog日志

聊聊BINLOG binlog记录什么&#xff1f; MySQL server中所有的搜索引擎发生了更新&#xff08;DDL和DML&#xff09;都会产生binlog日志&#xff0c;记录的是语句的原始逻辑 为什么需要binlog&#xff1f; binlog主要有两个应用场景&#xff0c;一是数据复制&#xff0c;在…