当前位置: 首页 > news >正文

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.lryc.cn/news/249283.html

相关文章:

  • Android 11.0 默认开启USB调试功能
  • 单片机AVR单片机病房控制系统设计+源程序
  • C语言——多种方式打印出1000之内的所有的“水仙花数”
  • .net 8 发布了,试下微软最近强推的MAUI
  • 【产品经理】AI在SaaS产品中的应用及挑战
  • Python实现一箭穿心
  • 机器人AGV小车避障传感器测距
  • Boost:进程间共享内存
  • Android Camera Surface显示相关问题总结
  • php通过curl方式发送接受xml数据
  • 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建
  • Python语言创建爬虫代理IP池详细步骤和代码示例
  • Oracle研学-介绍及安装
  • 建设银行新余市分行积极开展国债下乡宣传活动
  • 【javascript】如何判断一个对象属性是否存在
  • Linux-hid
  • Paraformer 语音识别原理
  • 用户注册这样玩,保你平安
  • QXDM Filter使用指南
  • 智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 3dsMax插件Datasmith Exporter安装使用方法
  • Rocketmq架构
  • 中兴亮相中国国际现代化铁路技术装备展览会 筑智铁路5G同行
  • 从零学算法15
  • 《Effective C++》条款27
  • 无图谱不AI之三元组数据保存Neo4j
  • Mybatisplus同时向两张表里插入数据[事务的一致性]
  • 天眼销:精准的企业名录
  • TypeError: Cannot read properties of null (reading ‘shapeFlag‘)
  • 视频监控平台EasyCVR多场景应用,AI视频分析技术助力行业升级转型