单片机知识总结,51中断秘籍(外部中断,定时器中断,定时器计数),串口通信秘籍【1000字】【原创】

2023-11-15


1、普中科技开发板

在这里插入图片描述

2、中断寄存器配置详解(截图)

在这里插入图片描述
TMOD是寄存器,TCON也是寄存器但是我们一般不直接用它(而是直接调用里面的TR0或者TR1,或者IE1或者IE0,或者IT1或者IT0)
在这里插入图片描述

定时器1和定时器0由TR0或者TR1开启,定时器具有定时和计数功能,定时还是计数由TMOD中的C/T杠来决定,为1就是计数
TMOD中的GATE一般默认就是0,这样好触发定时器
定时器也有四种方式(定时器0123)(由TMOD里面的M1和M0决定)
在这里插入图片描述

51单片机有五个中断,两个定时器中断,两个外部中断,一个串行口,各自具有优先级
在这里插入图片描述
串行通信有四种工作方式,分别是方式0123
SCON是串行口控制寄存器,里面的SM0和SM1是选择串行口工作方式(0123)
其中串行口SCON寄存器中的TI=发送中断标志位,我们一般是直接调用它使用,而不是调用SCON(一般直接调用是设置工作方式)
串口通信方式中,0和2波特率是固定的,1和3波特率是可变的
在这里插入图片描述

PCON寄存器是电源管理寄存器,里面有SMOD是用来设置串口的波特率是否加倍(0是串口123正常,1是串口方式123加倍)

3、中断寄存器配置文字总结

定时器1和定时器0由TR0或者TR1开启,定时器具有定时和计数功能,定时还是计数由TMOD中的C/T杠来决定,为1就是计数
TMOD中的GATE一般默认就是0,这样好触发定时器
51单片机有五个中断,两个定时器中断,两个外部中断,一个串行口,各自具有优先级
串行通信有四种工作方式,分别是方式0123
PCON寄存器是电源管理寄存器,里面有SMOD是用来设置串口的波特率是否加倍(0是串口123正常,1是串口方式123加倍)
SCON是串行口控制寄存器,里面的SM0和SM1是选择串行口工作方式(0123)
TMOD是寄存器,TCON也是寄存器但是我们一般不直接用它(而是直接调用里面的TR0或者TR1,或者IE1或者IE0,或者IT1或者IT0)
第一行文字中的定时器也有四种方式(定时器0123)(由TMOD里面的M1和M0决定)
其中串行口SCON寄存器中的TI=发送中断标志位,我们一般是直接调用它使用,而不是调用SCON(一般直接调用是设置工作方式)
串口通信方式中,0和2波特率是固定的,1和3波特率是可变的

4、文字总结2

中断与外部中断
五个中断源(其实六个,定时器计数器2不考虑,也不学,定时与计数是一对的)
EA:CPU中断总开关,位于中断允许寄存器IE中,IE的作用是它里面的位的不同位控制不同中断的打开,即指五个中断源
IP:中断优先级寄存器,一般用不到,了解即可,优先级控制寄存器
外部中断分为1和2,都是低电平有效,使用中断先声明哪种中断,IT0是外部
TMOD:里面位的功能是进行定时器计数器中断方式的确定,IE位中的只是打开
TCON:启动定时器计数器中断(IE打开,TMOD确定,TCON启动),定时器计数器控制寄存器
EX0:外部中断0中断允许位,位于IE
IT0:低电平有效或下降沿有效
INT0,INT1:就是外部中断0和1的意思
…快烦死了,郭天祥和普中的竟然不同,晕
INT0:产生中断,其引脚低电平或下降沿引起(普中科技)
TCON都有,TMOD是定时器与计数器(郭天祥)
IE与IP控制所有

根据百度文库中普中科技PPT,理解如下,INT0中,先选择IT0(TCON中)中断触发方式,然后IE0(TCON中)同意,再EX0(IE中)允许,再IP(我不懂),大前提是EA=1
GATE:GATE=1,定时器计数器启动与停止受TCON与外部引脚INT0或INT1共同控制,GATE=0,则仅受TCON控制

5、文字总结3

51单片机定时器与计数器 T/C

定时器与计数器工作与cpu互不干扰
机器周期=6状态周期=12振荡周期=1us
定时器计数器溢出时,中断标志位置1
TMOD设置工作方式,TCON控制启动
TMOD高四位低四位用于控制定时器1与0,通常我们让GATE为0,定时计数有四种工作方式,我们只使用方式1(16位)与方式2(8位自动重装)
TCON中TF1,TR1,TF0,TR0用于设置相关状态

在这里插入图片描述
程序模板流程
设置TMOD
计算初值写入TCON中
对EA赋值开启中断
TR0,TR1置位

6、代码函数示例

1、外部中断0初始化函数

void Int0Init()
{
	//设置 INT0
	IT0=1;//跳变沿出发方式(下降沿)
	EX0=1;//打开 INT0 的中断允许。
	EA=1;//打开总中断
}

2、外部中断1初始化函数

void Int1Init()
{
	//设置INT1
	IT1=1;//跳变沿出发方式(下降沿)
	EX1=1;//打开INT1的中断允许。	
	EA=1;//打开总中断	
}

3、定时器中断0初始化函数

void Timer0Init()
{
	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

	TH0=0XFC;	//给定时器赋初值,定时1ms
	TL0=0X18;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器			
}

4、定时器中断1初始化函数

void Timer1Init()
{
	TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。

	TH1=0XFC;	//给定时器赋初值,定时1ms
	TL1=0X18;	
	ET1=1;//打开定时器1中断允许
	EA=1;//打开总中断
	TR1=1;//打开定时器			
}

5、外部中断0完整程序代码

/****************************************************************
**********************
实验现象:下载程序后,操作 K3 按键使 D1 状态取反
接线说明: (具体接线图可见开发攻略对应实验的“实验现象”章节)
1,单片机-->LED&交通灯模块
P20-->D1
2,单片机-->独立按键模块
P32-->K3
注意事项:
*****************************************************************
**********************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k3=P3^2; //定义按键 K3
sbit led=P2^0; //定义 P20 口是 led
/****************************************************************
***************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1 时,大约延时 10us
*****************************************************************
**************/
void delay(u16 i)
{
while(i--);
}
/****************************************************************
***************
* 函 数 名 : Int1Init()
* 函数功能 : 设置外部中断 1
* 输 入 : 无
* 输 出 : 无
*****************************************************************
**************/
void Int0Init()
{
//设置 INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开 INT0 的中断允许。
EA=1;//打开总中断
}
/****************************************************************
***************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*****************************************************************
**************/
void main()
{
Int0Init(); // 设置外部中断 0
while(1);
}
/****************************************************************
***************
* 函 数 名 : Int0() interrupt 0
* 函数功能 : 外部中断 0 的中断函数
* 输 入 : 无
* 输 出 : 无
*****************************************************************
**************/
void Int0() interrupt 0 //外部中断 0 的中断函数
{
delay(1000); //延时消抖
if(k3==0)
{
led=~led;
}
}

6、定时器中断0完整程序代码

/**************************************************************************************
实验现象:下载程序后,D1小灯循环点亮1秒,熄灭1秒。使用单片机内部定时器可以实现准确延时
		  
接线说明: (具体接线图可见开发攻略对应实验的“实验现象”章节)
		   1,单片机-->LED&交通灯模块
		   		P20-->D1
		   	
	
注意事项:																				

  
***************************************************************************************/

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit led=P2^0;	 //定义P20口是led


/*******************************************************************************
* 函 数 名         : Timer0Init
* 函数功能		   : 定时器0初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0Init()
{
	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

	TH0=0XFC;	//给定时器赋初值,定时1ms
	TL0=0X18;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器			
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	Timer0Init();  //定时器0初始化
	while(1);		
}

/*******************************************************************************
* 函 数 名         : void Timer0() interrupt 1
* 函数功能		   : 定时器0中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0() interrupt 1
{
	static u16 i;
	TH0=0XFC;	//给定时器赋初值,定时1ms
	TL0=0X18;
	i++;
	if(i==1000)
	{
		i=0;
		led=~led;	
	}	
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机知识总结,51中断秘籍(外部中断,定时器中断,定时器计数),串口通信秘籍【1000字】【原创】 的相关文章

  • Camtasia2024中文绿色版本下载安装详细步骤教程

    Camtasia2024是一款功能强大的屏幕录制和视频编辑软件 它可以帮助用户轻松地记录电脑屏幕上的任何操作 并可以将录制的视频进行编辑和制作成高质量的视频教程 演示文稿 培训课程等 Camtasia具有直观的界面和易于使用的工具 包括添加
  • Jmeter 性能压测-常遇问题与解决技巧

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何避免过度努力带来的负面影响

    在快节奏的现代职场中 我们经常听到关于 努力 的话题 有些人认为 只有通过不断地努力和投入 才能够获得成功 然而 如果过度用力 可能会带来一些负面影响 本文将探讨职场中过度用力的负面影响以及如何避免这些问题 首先 让我们来看一下过度用力的负
  • 手写转文字扫描软件有哪些?方便又好用的工具谁不喜欢?

    大家有没有仔细数过 你们在从小到大的学习生涯中使用了多少笔记本 反正我是经常被我妈催着把以前的笔记本丢掉 但是它们承载的可都是我学生时代的记忆 就连当时觉得复杂难懂的内容 其实也挺有意思的 所以 我一直在思考 到底有什么方法可以让我在不占用
  • 在线智能抠图软件有哪些?证件照背景颜色更换不求人

    2024年上半年全国计算机等级考试 NCRE 报名开始啦 不出意外 这次报名仍然是需要提交证件照 具体要求如下 本人近期正面免冠 白色背景 彩色证件照 不得使用生活照 美颜照 最小像素高宽为192x144 最小成像区高宽为48mmx33mm
  • SAN与NAS:存储架构的对比与选择

    在当今的数据密集型时代 存储架构的选择对于企业的成功至关重要 SAN Storage Area Network 和NAS Network Attached Storage 作为两种主流的存储架构 各自拥有独特的优势和应用场景 本文将深入探讨
  • Win11熄屏,自动断开WiFi解决方法

    一 前言 由于 我需要使用自己的电脑 远程连接服务器跑代码 电脑息屏之后 wifi断开 代码也就自动停止了 非常生气 二 解决办法 网上的办法很多都是win10 而且别人的都有电源管理 而我的没有 下面是别人的 这是我的 就是没有电源管理
  • 机器配音在线工具有哪些? 让你的语音合成更自然

    你是不是也想成为一名大博主 随着现在的互联网时代蓬勃发展 出现了一批又一批的网红 在家里带带货 拍拍视频就能赚大钱 越来越多的人朝向网络世界进击 那么这些大博主制作一个爆款视频 必不可少的就是配音啦 但是其实很多博主用的并不是真人配音 而是
  • 【性能测试入门】:压力测试概念!

    压力测试可以验证软件应用程序的稳定性和可靠性 压力测试的目标是评估软件在极端负载条件下的鲁棒性和错误处理能力 并确保软件在紧急情况下不会崩溃 它甚至可以进行超出软件正常工作条件的测试 并评估软件在极端条件下的工作方式 在软件工程中 压力测试
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 【计算机毕业设计】实验室预约管理

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 储存设备的进化与发展:从传统到现代的飞跃

    随着科技的飞速发展 储存设备作为信息时代的基石 经历了翻天覆地的变化 从最早的机械硬盘到现代的固态硬盘和云存储 储存设备的进化与发展不仅提升了数据存储的速度和容量 还极大地改变了我们的工作和生活方式 本文将带您回顾储存设备的进化历程 并探讨
  • 2024最新MathType7.4.10中文版下载安装激活教程

    MathType 是一款专业的数学公式编辑工具 提供交互式编辑器 让你在编辑数学试卷 书籍 报刊 论文 幻灯演示等文档轻松输入各种复杂的数学公式和符号 1 本次讲解mathtype 7版本的安装步骤 MathType2024 Win 安装包
  • 如何正确下载激活NTFS for Mac2024最新版本?

    对于产品来说 更新换代是常有的事 很多软件在用户使用过后 会根据用户的使用需求以及一些客观需求 将软件进行改进 这样一个新的版本的软件就会出现 用户需要将软件进行更新才能享受最新的功能 使用更加完善的软件 所以我们一定要学会如何将软件进行更
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 如何正确使用RC滤波网络

    众所周知 最有效的滤波电路应靠近噪声源放置 滤波的作用是对噪声电流进行及时有效地阻止和转移 实际设计中 工程师经常使用高的串联阻抗 电阻 电感和铁氧体 阻止电流 并使用低的并联阻抗 电容 转移电流 通常情况下 我们期望滤波器可以对噪声信号衰
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数

随机推荐

  • 49个Python的常见操作/技巧/例子

    17个Python的常见操作 技巧 很多读者都知道 Python 是一种高级编程语言 其设计的核心理念是代码的易读性 以及允许编程者通过若干行代码轻松表达想法创意 实际上 很多人选择学习 Python 的首要原因是其编程的优美性 用它编码和
  • 《pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统》

    pigcms v6 2最新完美至尊版无任何限制 小猪微信源码多用户微信营销服务平台系统 前两天分享了套小猪CMS PigCms 多用户微信营销服务平台系统V6 1完美破解至尊版带微用户管理CRM 微信支付 还是不少童鞋反应出不少问题 今天再
  • unity-障碍物和空气墙的设置

    文章目录 建立空气墙 建立空气墙 建个游戏对象 然后给他添加2d碰撞盒子属性 把它放到相机下面 让它成为相机的所属的子组 跟随相机一起移动通过 创建新的标签便于碰撞确认操作 判断我们游戏操控的物体是否在空气墙上 判断是否处于空气墙上面 pr
  • 每日必看的五个产品科技类网站?

    1 Github 看看 GitHub 社区今天最热门的是什么 https github com trending 2 v2ex 会有一些新的互联网产品发布在这里 偶尔会附带免费的激活码 3 producthunt 看看今天有什么新的创业产品
  • Maven Pom设置简单项目打jar包时的入口类

    Maven Pom设置简单项目打jar包时的入口类 有时 不使用框架的简单的项目也要以jar包的形式发布和使用 如果不知道如何在pom中设置项目的入口类 就比较麻烦 在pom文件中添加如下代码 就可以设置项目的入口类了 当然 入口类中要有m
  • miniconda的安装和python环境搭建

    文章目录 前言 下载minianaconda 安装和配置 安装注意 配置 更改镜像源 创建虚拟环境和激活 conda常用指令 前言 最近想用python去写一个写ini配置文件的工具 由于电脑现在的环境是python2的 想用python3
  • AES加密出现Error: Malformed UTF-8 data报错的解决方法

    按我上一章 vue java 使用AES 前后端加密解密 址址 https blog csdn net weixin 42124196 article details 88416488 文章进行aes加密的项目 当页面获取数据时一直出现Er
  • java aio和nio的区别

    AIO 是彻底的异步通信 NIO 是同步非阻塞通信 有一个经典的举例 烧开水 假设有这么一个场景 有一排水壶 客户 在烧水 AIO的做法是 每个水壶上装一个开关 当水开了以后会提醒对应的线程去处理 NIO的做法是 叫一个线程不停的循环观察每
  • OpenMV的程序烧录

    OpenMV官方烧录教程 OpenMV脱机运行 星瞳科技 利用数据线连接OpenMV和电脑 如果OpenMV闪烁绿灯 之后是白灯 再结束 表示OpenMV连接电脑成功 打开OpenMV IDE 点击左下方的这个 或者按Ctrl E连接上Op
  • Acwing-3443. 学分绩点

    include
  • 超微主板升级bios_超微 X10DAi安装黑苹果10.13.6 OC引导

    配置 处理器 英特尔 Xeon 至强 E5 2650 v4主板 超微 X10DAI Wellsburg 内存 64 GB 三星 DDR4 2133MHz 主硬盘 Lexar 500GB SSD 500 GB 固态硬盘 主显卡 Nvidia
  • openwrt php 调用,openwrt在脚本中调用UCI接口, 非常值得学习

    bin sh Copyright C 2006 2013 OpenWrt org Copyright C 2006 Fokus Fraunhofer Copyright C 2010 Vertical Communications debu
  • nvidia tx/xavier/orin硬件平台上添加开机启动程

    概述 随着NVIDIA的xavier及orin系列硬件平行推出 自动驾驶车端处理器也逐渐频繁开发及使用 开机脚本使用 etc profile 通常在系统登录时 会执行 多次登录 多次执行 xavier上增加开机启动脚本 不能在 etc pr
  • 记录解压zip文件

    zip文件有30G unzip不能用 改用jar解压 unzip 解压 JPEGImages zip 文件时 异常提示如下 Archive dataset test rgb zip End of central directory sign
  • 隐藏Chrome浏览器新增标签页下方的快捷方式缩略图

    作为强迫症患者不喜欢搜索栏下方还有多余的东西 看着8个最近访问的快捷方式缩略图太不舒服了 在网上搜索了一堆方法 最有效的是替换一个PAK文件 但是过程有些繁琐 自己摸索后发现了一个简单的方法 在这记录一下以防自己忘记 查看设置中搜索引擎的地
  • 8种常见的排序算法-----你值得掌握(很细,很全)

    目录 一 排序的概念 二 常见的排序 三 常见排序算法的实现 1 插入排序 1 1 基本思想 1 2直接插入排序动态图 1 3直接插入排序的代码实现 2 希尔排序 2 1基本思想 2 2希尔排序过程 2 3希尔排序代码实现 2 4gap的选
  • CVPR2019接收结果公布了,但CVPR 2018的那些论文都怎么样了?

    CVPR 作为计算机视觉三大顶级会议之一 一直以来都备受关注 被 CVPR 收录的论文更是代表了计算机视觉领域的最新发展方向和水平 今年 CVPR 2019 将于美国洛杉矶举办 上个月接收结果公布后 又引起了 CV 届的一个小高潮 一时间涌
  • arxiv文章下载

    使用中科院arxiv的镜像地址 http xxx itp ac cn 地址由 https arxiv org pdf 1512 02325 pdf 切换到 http xxx itp ac cn pdf 1512 02325 pdf
  • 异步通知实验(信号)

    目录 异步通知 异步通知简介 驱动中的信号处理 应用程序对异步通知的处理 硬件原理图分析 实验程序编写 修改设备树文件 程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测试 在前面使用阻塞或者非阻塞的方式来读取驱动中按键值
  • 单片机知识总结,51中断秘籍(外部中断,定时器中断,定时器计数),串口通信秘籍【1000字】【原创】

    文章目录 1 普中科技开发板 2 中断寄存器配置详解 截图 3 中断寄存器配置文字总结 4 文字总结2 5 文字总结3 6 代码函数示例 1 外部中断0初始化函数 2 外部中断1初始化函数 3 定时器中断0初始化函数 4 定时器中断1初始化