51 USART数据收发

news2024/11/16 12:08:35

1.0 USART实现单个数据收发

串口启动之前需要对串口进行初始化,主要是设置产生波特率的定时器1,使用串口的工作方式还是中断的工作方式具体的配置步骤如下所示。

注:

1: 确定TMOD (定时器模式寄存器) 确定定时器的工作模式

2:计算定时器的初始值 TH1 或者TL1的初始值(这里是定时器的初始值计算涉及到波特率)

3:启动定时器TR

4: 确定串型口控制SCON(串口控制寄存器,用于对串口进行控制)

5:串行口在中断的工作方式时需要进行中断的设置,(IE 或者是IP寄存器)

【串口实现一个字节的数据收发】

51 中寄存器的定义(是否可以位寻址)

可以位寻址:数据的相关引脚系统总有定义

参考数据手册

SCON 串口控制寄存器----工作方式我们选中的工作模式为模式 1 ,REN允许单片机接收控制位这个位置为 1。


【串口方式1收发数据ASCII码值对应表】

注:文本模式下,存储的是ASCII的值,文本模式下发送过去的数据显示的是ASCII对应的值,也就是在文本模式下存储的是ASCII的值。

注:HEX---16进制模式下收到的才是发送过去的数据,也就是发送1 发送过去的就是01...


USART 单个数据收发程序

 【串口向电脑发送数据】

 

TI 的意思就是发送中断的意思:表示发送完了,TI 标志为设置为1,然后申请中断,处理事情,并且需要手动软件复位

RI 的意思表示的是接收中断标志位。表示数据接收完毕可以接收, RI = 1, 接收完毕后需要软件手动清 0

#include <REGX52.H>
#include <intrins.h>
#define uint  unsigned int 
#define uchar unsigned char 
#define beep P2_3
#define dula P2_6
#define wela P2_7

uchar temp;
uint num,num1,dis,bm;
uchar code table[]={
								0x3f,0x06,0x5b,0x4f,
								0x66,0x6d,0x7d,0x07,
								0x7f,0x6f,0x77,0x7c,
								0x39,0x5e,0x79,0x71};

void DelayMs(uint c);
void Display(uint shu);
void Init();

								
void main ()
{
	Init();

	while(1)
	{
		if(RI==1)
		{
			RI=0;
			temp=SBUF;
		}
		if(temp==2)
		{
			beep=0;
		}
		if(temp==3)
		{
			beep=1;
		}
		if(temp==4)
		{
			/*进入之后temp的值赋值为0*/
			temp=0;
			SBUF=0xaa;
		}
		Display(temp);
	}
}

void Init()
{
	TMOD=0x21;//配置定时器0是工作模式1,定时器1是工作模式2
	TH0=(65536-46296)/256;
	TL0=(65536-46296)%256;//装初值
	TH1=0xfd;//bps为9600
	TL1=0xfd;//装初值
	TR1=1;//启动定时器1
	SCON=0x50;//01010000
}

void Int0() interrupt 0
{
	beep=~beep;
}

void Time0() interrupt 1
{
	TH0=(65536-46296)/256;
	TL0=(65536-46296)%256;//装初值
	num++;
}

void Time1() interrupt 3
{
	TH1=(65536-45296)/256;
	TL1=(65536-45296)%256;//装初值
	num1++;
}



void DelayMs(uint c)
{
	uint a,b;
	for(a=c;a>0;a--)
		for(b=115;b>0;b--);
}
void Display(uint shu)
{
			wela=1;
			P0=0xfe;//11111110 打开第一个数码管的位选11000000
			wela=0;P0=0;
			dula=1;
			P0=table[shu/100];//显示0
			dula=0;
			DelayMs(2);	
	
			wela=1;
			P0=0xfd;//11111101 打开第2个数码管的位选11000000
			wela=0;P0=0;
			dula=1;
			P0=table[shu/10%10];//显示0
			dula=0;
			DelayMs(2);
	
			wela=1;
			P0=0xfb;//11111011 打开第3个数码管的位选11000000
			wela=0;P0=0;
			dula=1;
			P0=table[shu%10];//显示0
			dula=0;
			DelayMs(2);
}

2.0 keil工具实用小技巧

自定义注释


...

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

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

相关文章

Thinkpad产品系列进BIOS设置(重装系统)

Thinkpad产品系列进BIOS设置&#xff08;重装系统&#xff09; 对于大多数ThinkPad笔记本产品&#xff08;T、X、W、P、L、E系列部分除外&#xff09;&#xff0c;例如T14、T15、T490、T590、X13、X390等&#xff0c;您需要在启动计算机时&#xff0c;当显示ThinkPad徽标时&…

【简单讲解Perl语言】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

46【Aseprite 作图】发光

1 通过“编辑 - 特效 - 卷积矩阵”&#xff0c;这次选择“7*7”&#xff0c;可以做出窗户的效果

【数据结构初阶】 --- 单链表

关于链表你应该先了解这些 下图描述了物理模型和逻辑模型&#xff0c;大多数常见的其实是逻辑模型&#xff0c;但这对初学者或者掌握不扎实的同学不太友好&#xff0c;所以这里我重点讲解物理模型&#xff0c;当了解了这些细节&#xff0c;以后做题或是什么就直接画逻辑模型就…

第8章 函数

第8章 函数 8.1 定义函数8.1.1 向函数传递信息8.1.2 实参和形参 8.2 传递实参8.2.1 位置实参8.2.2 关键字实参8.2.3 默认值 8.3 返回值8.3.1 返回简单值8.3.2 让实参变成可选的8.3.3 返回字典8.3.4 结合使用函数和 while 循环 8.4 传递列表8.4.1 在函数中修改列表8.4.2 禁止函数…

vue操作蓝牙教程

项目背景 想在VUE中使用蓝牙功能&#xff0c;百度了好久也尝试了好多都没法实现。 概念讲价 如果要在浏览器中使用蓝牙&#xff0c;去搜索关键字【navigator.bluetooth】&#xff0c;搜索后发现这根本不是想要的结果。 解决方法 去搜索关键字【uniappbluetoothvue】&#x…

mouceMice智能垃圾分类系统

mouceMice智能垃圾分类系统 1.成员名称和任务分配 成员认领任务陈曦实现登录、注册、检索垃圾类型和前端部分实现、连接树莓派实现socket通信传输图片杨雨佳需求分析和总体进展监督郑博文部分前端页面实现及其优化李睿初步实现深度学习算法、树莓派连接和算法效率提升范兴宇项…

【AI法官】人工智能判官在线判案?

概述 AI法官是一款为用户提供专业法律分析和判决建议的智能体应用。用户只需简要描述案情&#xff0c;AI法官便会利用其强大的法律知识和逻辑推理能力&#xff0c;快速且准确地梳理出判决结果。该应用的目标是为用户提供高效、准确、合法的判决建议。 角色任务 任务描述 作为…

【CS.SE】2024年,你应该选择计算机专业吗?详细分析与未来展望

文章目录 1. 引言1.1 背景介绍 2. 计算机相关专业的现状与挑战2. 计算机相关专业的现状与挑战2.1 行业内的就业趋势2.1.1 现有就业数据2.1.2 行业需求变化 2.2 市场饱和度与竞争2.2.1 毕业生数量增长2.2.2 薪资与职业发展 2.3 技术创新与行业发展2.3.1 新兴技术的发展2.3.2 全球…

TinyHttpd源码精读(三)

在上一章中我们一起看了如何实现静态的网页&#xff0c;在这里我们一起看Tinyhttpd最后的一部分&#xff0c;动态网页的实现&#xff1a;在这里首先声明下因为cgi脚本的支持问题&#xff0c;所以我会新建一个简单的cgi脚本然后将路径导向到这个脚本&#xff1a; 0.perl的配置&…

2024年建筑、水利交通与工程管理国际学术会议(ICAWRTEM 2024)

全称&#xff1a;2024年建筑、水利交通与工程管理国际学术会议&#xff08;ICAWRTEM 2024&#xff09; 会议网址:http://www.icawrtem.com会议地点: 广州投稿邮箱&#xff1a;icawrtemsub-conf.com 投稿标题&#xff1a;ICAWRTEM 2024ArticleTEL。投稿时请在邮件正文备注&#…

MySQL之高级特性(一)

高级特性 外键约束 InnoDB是目前MySQL中唯一支持外键的内置存储引擎&#xff0c;所以如果需要外键支持那选择就不多了。使用外键是有成本的。比如外键通常都要求每次在修改数据时都要在另一张表中多执行一次查找操作。虽然InnoDB强制外键使用索引&#xff0c;但还是无法消除这…

一夜之间,苹果杀死无数AI工具创业公司!GPT-4o深度整合进苹果

就在刚刚&#xff0c;苹果发布会WWDC2024官宣了一系列AI相关的重磅升级。 由于这一波AI升级攒的太大了&#xff0c;苹果甚至索性创造了一个新的概念——苹果智能&#xff08;Apple Intelligence&#xff09;。 如果你认为 苹果智能 Siri升级&#xff0c;那你就大错特错了。 …

分层解耦

三层架构 controller:控制层&#xff0c;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据&#xff0c; service:业务逻辑层&#xff0c;处理具体的业务逻辑。 dao:数据访问层(Data Access Object)(持久层)&#xff0c;负责数据访问操作&#xff0c;包括数…

动态规划(多重背包问题+二进制优化)

引言 多重背包&#xff0c;相对于01背包来说&#xff0c;多重背包是每个物品会有相应的个数&#xff0c;最多可以选那么多个&#xff0c;因而对于朴素多重背包&#xff0c;需要在01背包的基础上&#xff0c;再加一层物品的循环 朴素多重背包例题 P2347 [NOIP1996 提高组] 砝…

【Affine / Perspective Transformation】

文章目录 仿射变换介绍仿射变换 python 实现——cv2.warpAffine透视变换透视变换 python 实现——cv2.warpPerspective牛刀小试各类变换的区别与联系仿射变换和单应性矩阵透视变换和单应性矩阵 仿射变换介绍 仿射变换&#xff08;Affine Transformation&#xff09;&#xff0…

【话题】评价GPT-4o:从革命性技术到未来挑战

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言技术原理应用领域实际案例优势挑战局限性未来展望文章推荐 引言 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术的进步一直是推动技术革…

odoo15升级odoo16遇到的问题及解决过程

odoo15升级odoo16遇到的问题 PyMuPDF 档案管理整理时,从15升级16出现如下错误: File "f:\od162306\dms\dmssp\models\shenqb.py", line 136, in doc_fj_pdf doc.SaveAs(ftem, FileFormat=17) # input_file.replace(".docx", ".pdf") F…

鸿蒙开发文件管理:【@ohos.environment (目录环境能力)】

目录环境能力 该模块提供环境目录能力&#xff0c;获取内存存储根目录、公共文件根目录的JS接口。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口为系统接口&#xff0c;三方应用不支…

Pythone 程序打包成 exe

1.安装pyinstaller # 安装 pip install pyinstaller # 查看版本 pyinstaller -v2.更新pyinstaller 版本 # 更新 pip install --upgrade pyinstaller # 查看版本 pyinstaller -v3.切换到 py文件所在目录 #切换到.py所在的目录 E: cd cd E:\x-svn_x-local\04PythoneProjects\A…