目录

  1. 寄存器
  2. 置位复位
  3. 中断系统
    1. 中断概念
    2. 中断系统
  4. 中断系统构造
    1. 外部中断
    2. 计时器、定时器中段
    3. 串口中断
  5. 中断允许控制(控制中断方式)
    1. 总中断
    2. 各个中断
  6. 中断请求标志(控制触发方式)
    1. 外部中断触发方式IT0、IT1
    2. 标志位IE0、IE1
    3. 计时器、定时器溢出中断TF0、TF1
  7. 优先级
    1. 中断优先级三条原则
  1. 中断源

    1. 中断号
  2. 中断响应条件
  3. 使用中断思路
  4. 例子
  • 寄存器

    1. 寄存器是cpu的硬件设计者制定的,
    2. 目的是让程序员可以在cpu设计好后通过写软件让开关开或者关,留作外设被编程控制的“活动开关”。
  • 置位/复位

    1. 置位为1,复位为0
  • 溢出

    1. 消失
  • 下降沿与低电平区别
  1. 外部中断低电平触发:外部中断低电平触发只要引脚为低电平时间内中断一直有效,那么就会一直进入中断,直到电平变化为高电平。
  1. 下降沿触发:下降沿触发中断只会触发一次,只有在下次电平发生变化时才会重新触发中断。

中断系统

中断概念

中断发生:处理a,发生事件b请求cpu去处理

中断响应和中断服务:cpu暂时中断当前工作处理事件b

中断返回:b处理完毕,回到a中断的地方继续处理事件a

中断系统

中断源:引起cpu中断的根源(中断源向cpu提出中断请求)

断点:事件b处理完毕后,回到原来中断的地方

中断系统结构(51)

5个中断源,2个优先级,可实现二级中断嵌套

外部中断

IT0是通过ICON配置的

P3^2是外部中断INT0,

IE0 中断标志位

寄存器

TCON/IE/IP 都为寄存器,需要程序控制

置位/复位

置位为1,复位为0

定时计数器中断

TF0管计数器定时器T0,当T0发生溢出,TF0发生置位


串行口中断请求

RI 接收一帧串行数据,RI置1

TI 发送一帧串行数据,TI置1

中断允许控制

IE寄存器

CPU对中断系统所有中断(EA) 某个中断(5个)的开关控制。(看构造图)

中断请求控制


       IT0、IT1:外部中断触发方式选择,=1时边沿,=0时电平

IE0、IE1:外部中断请求标志位,当接收到IT0、IT1有效,则置1(看构造图)

优先级

优先级的三条原则

同时接收几个中断时候,首先响应优先级别最高的中断请求

正在进行的中断过程不能被新的同级或者低优先级别的中断请求打断

正在进行的低优先级中断服务,能被高优先级别中断请求所中断

实现上述两条原则方法

中断源

      

中断号

写程序时候需要用到中断号,也就是当程序输入0时候,外部输入0可以中断,如果再写入一个2,就可以当2发生中断请求,cpu就执行事件3.。。如果想要0中断,但是程序却写成1,那么中断就不回执行了。

中断响应条件

中断源的中断请求

此中断源的中断允许为1

CPU开中断(EA=1)

以上三条满足,CPU才有可能响应中断

使用中断思路,程序员应该干什么?

想使用的中断是哪个?选择相应的中断号

你所希望的触发条件是什么?

你希望中断后干什么?

例子

主程序是为了让中断系统打开

中断服务函数是为了在里面编写中断后运行的程序

Interrupt 0;0是中断号,表示选择中断源,但是首先得打开中断系统的这个寄存器

定时器与计数器

目录

1,51单片机定时计数器

2,CPU时序

3,各个周期值的转换

4,计数器的模

5,分频

6,工作原理

7,内部结构

工作方式寄存器TMOD

控制寄存器TCON

8,工作方式

9,初始化

10,计数器初值的计算

51单片机定时计数器

有两组定时器/计数器,既可以定时又可以计数

定时器/计数器是与CPU互相独立,定时器计数器工作过程是自动完成

定时器/计数器是根据机器内部的时钟或者外部的脉冲信号对寄存器的数据加1

可以增加单片机的效率,简单重复的事情可以交给定时器,cpu处理复杂的事情

定时器可以精确定时

CPU时序

振荡周期:单片机提供的定时信号的振荡源(晶振周期,外加振荡周期)

状态周期(S):2个振荡周期,S周期或时钟周期

机器周期:6个状态周期,12个振荡周期;

指令周期:完成一条指令所占的全部时间,以机器周期为单位

各个周期值的转换

振荡周期=1/12us;

状态周期=1/6us;

机器周期=1us;

指令周期=1~4us;

周期等于频率的倒数

一个字节=8位

计数器的模

计数器运行时,从某一个状态开始依次遍历不重复的各个状态后完成一次循环,所经历的状态总数叫做计数器的模,M表示

分频

分频是指将单一频率的信号降低为原来的1/N,就叫N分频。实现分频的电路或者装置叫做分频器,这里的分频单指信号而言。如33MHZ的信号2分频得到16.5MHZ的信号,3分频得到11MHZ的信号,10分频得到3.3MHZ的信号

工作原理

实质是加1计数器,随着输入脉冲自加1,也就是每来一个脉冲,计数器就加1,加到全为1时,再输入一个脉冲就可以使计数器全为0(51系列单片机内部有两个计数器/定时器,是加1计数器,就是每个机器周期计数值就加1,如原来值是10,加1后就为11.如果是减1计数器就减1,减1后就为9.搞清是加1还是减1,在使用时是有区别的.例如,让单片机计50个数,如果是减1计数器的话,那初始值就是50,每个计数事件后就减1,当50次后就减为0,则计数结束.可是如果是加1计数器的话,还要看计数的最大值是多少,如8位时,最大值是255,模是256,则初始值=256-50=206,这样,每个计数事件后加1,一直加到255,再加1个就是模256了,也就是计数50次后,就要回0,则计数结束.所以,区别是在计算初始值时的方法是不同的.)且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。

如果定时器/计数器工作在定时模式,表示定时时间已到。如果工作在计数模式,表示计数值已满。

可见,由溢出时计数器值减去计数初值才是加1计数器的计数值(8位,计数值=256-206=50)

周期

周期等于频率分之一

内部结构

由高8位和低8位两个寄存器THx,TLx组成

TMOD是定时器/计数器的工作方式寄存器,确定工作方式和工作

TCON控制寄存器,控制中断哪个T0,T1的启动和停止,设置溢出标志

工作方式寄存器TMOD

低四位控制T0,高四位控制T1

Gate门控位,gate=0时,用于控制器的启动是否受外部中断的影响,用TCON中TR0或TR1=1,就可以启动定时计数器工作

Gate=1时,INT0/1=1(高电平),TR0或者TR1=1,可以启动定时计数器。

(一般使用gate=0)

C/T:定时器/计数器模式选择位。C/T=0为定时模式,C/T=1为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式

控制寄存器TCON

TF1:溢出中断请求标志位,当T1溢出硬件控制TF1置1。CPU响应中断后TF1由硬件自动清0.T1工作时,CPU可随时查TF1状态。所以可以作测试的标志,同时TF1可以软件置1清0.

TR1:T1运行控制位。置1工作,置0停止。软件控制

工作方式

方式0

定时器模式时有:N=t/Tey

(t:想用定时器定的时间,如1ms

Tey:周期,过1周期计数加1,是时钟频率的倒数,求得想要计数的个数,才是这么长的计时,X为初值,写THx和TLx)

方式1

计数个数与计算初值的关系

X=216-N

方式2

自动重装载,当低8位满了会自动重新装载,从新装载初值不会累加,不会进位

方式3

初始化

对TMOD赋值,确定T0,T1的工作方式

计算初值,并将其写入TH0和TL0或TH1和TL1。

中断方式时,则对EA赋值,开放定时器中断

使TR0或者TR1置位,启动定时器/计数器定时或者计数

计数器初值的计算

机器周期就是CPU完成一个基本操作所需的时间

机器周期=1/单片机的时间频率

机器周期

我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而 C 语言一条语句的时间是不确定的,受到诸多因素的影响。一个机器周期等于12个时钟周期,所以12✖1/12=1

51单片机中断与定时器计数器,基于普中科技教学视频学习记录相关推荐

  1. 51单片机中断与定时器计数器,基于普中科技HC6800-ESV2.0

    目录 寄存器 置位复位 中断系统 中断概念 中断系统 中断系统构造 外部中断 计时器.定时器中段 串口中断 中断允许控制(控制中断方式) 总中断 各个中断 中断请求标志(控制触发方式) 外部中断触发方 ...

  2. python控制51单片机的红绿灯_基于51单片机的红绿灯实现(使用普中科技开发板)...

    C语言基础比较薄弱,红绿灯的倒计时和切换上,用了三个if()嵌套,总感觉应该有更好的方案,如果你恰巧知道,请教教我,在此谢过.以下是程序部分: //红绿灯设计:利用定时器实现LED灯亮灭,数码管倒计时 ...

  3. 基于普中科技的单片机开发实验仪编写的数字表

    基于普中科技的单片机开发实验仪编写的数字表 1.项目简单说明 一.显示日期,对ds1302芯片进行计时所得的日期用数码管进行显示: 二.显示温度,对18B20芯片测量所得的温度用数码管进行显示: 三. ...

  4. 51单片机初学者对定时器/计数器寄存器的理解

    画了张导图,记录一下 顺带记录下,static表示静态变量

  5. 基于普中科技开发板制作的数码管显示可调时钟

    目录 前言: 模块化代码: 定时器扫描按键代码: 定时器扫描数码管: 主函数main代码: 前言: 功能说明:通过按键1控制模式选择:模式0------时钟显示模式,模式1:------时钟设置模式 ...

  6. 串口中断和定时器中断_51单片机中断机制(定时器/计数器)

    单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引 ...

  7. 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议

    原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...

  8. 51单片机——秒表(定时器实现)

    此程序基于普中51单片机编写 涉及到的原理图: 具体功能 下载程序后,数码管显示00,当第一次按下K3时,定时器开始计时,数码管最右侧两个位以间隔为1s的时间从00到60显示数字:当第二次按下K3时, ...

  9. 51单片机中断interrupt……using……

    51单片机中断细节的一些问题. interrupt0:外部中断0 interrupt1:定时器中断0 interrupt2:外部中断 interrupt3:定时器中断1 interrupt4:串口 u ...

最新文章

  1. python实现反转链表讲解_基于Python实现2种反转链表方法代码实例
  2. [HAOI 2010]软件安装
  3. VTK:可视化之BillboardTextActor3D
  4. mykernel编译过程中问题解决
  5. matlab uigetfile的用法,matlab中uigetfile的用法
  6. SilverLight客户端搭建完善聊天室 测试网址swkzy.vicp.net
  7. win2003 iis上运行asp.net配置
  8. Bsdiff差分算法讲解
  9. Java 条形码 二维码 的生成与解析
  10. Android ------ 开源的Modnet算法实现抠图和更换背景
  11. Linux安装vim命令
  12. 基于Matlab App Designer的语音信号分析与处理(三):App的设计
  13. LeetCode 69. x的平方根
  14. JavaScript事件代理(事件委托)
  15. 03_STM32新建工程
  16. 群晖NAS套件之Hyper Backup的功能和使用方法
  17. Http status code 状态码
  18. 到底什么是幸存者偏差?有哪些例子?
  19. IntelliJ Idea列操作高效解决批量操作(生成枚举类实例)
  20. php生成个性签名,怎么巧妙添加个性签名

热门文章

  1. flex-grow 与flex-shink
  2. 视觉优化-立体图片实现
  3. 阿里云服务器购买和配置全流程
  4. EfficientDet论文解析
  5. Java设置与读取Cookie属性 央邦0首付,低押金先就业后付款
  6. outlook邮箱邮件内容乱码_邮件里的内容全是乱码怎么办?
  7. Redis精通系列——LRU算法详述(Least Recently Used - 最近最少使用)
  8. OpenAI提出新型机器人训练技术:模拟环境动态随机
  9. iphone用GDB修改游戏教程!详细的图文教程!
  10. Kof 2002 ps2 android,拳皇2002PS2版-公测版