单片机中断系统和定时计数器
51单片机的内部资源
T1
RX TX
EX0 1 EA 1 IE0
ET0 1 TF0
EX1 1 IE1
ET1 1 TF1
RI TI ≥1
SCON
ES 1
IP
PX0 1 0
PT0 1 0
PX1 1 0
PT1 1 0
PS 1 0
硬件查询
自
高
然
级
1
优
先
级 中断入口
中断源
自
低
0
然
级
优
先
级 中断入口
中断源
三、中断请求源
51单片机的五个中断请求源 : (1)INT0—外部中断请求0,由引脚INT0 (P3.2)输入,中断
中断请求
执行主 程序
断点
继续执行 主程序
中断响应
执行 中断 处理 程序
中断返回
主程序:CPU正常情况下运行的程序称为主程序。
中断源:把向CPU提出中断申请的设备称为中断源。
中断请求:由中断源向CPU所发出的请求中断的信号称中断 请求。
中断响应:CPU在满足条件情况下接受中断申请,终止现行 程序执行转而为申请中断的对象服务称中断响应。
IE0=0,无中断请求。
IE0=1,外部中断0有中断请求。当CPU响应该中断,转向中 断服务程序时,由硬件清“0”IE0。
(3)IT1—外部中断请求1为跳沿触发方式还是电平触发方式, 意义与IT0类似。
(4)IE1—外部中断请求1的中断请求标志位,意义与IE0类似。
(5)TF0—T0溢出中断请求标志位。 T0计数后,溢出时,由硬件置“1”TF0,向CPU申请中断,
串行中断是为串行数据传送的需要而设置的。每当串行 口发送或接收一组串行数据时,就产生一个中断请求。
单片机实验-外部中断、计数器定时器
1)用单次脉冲申请中断INT0,在中断处理程序中对输出信号进行反转。
ORG 0000HLJMP STARTORG 0003HLJMP INT0START:CLR P1.0MOV TCON, #01HMOV IE, #81HLJMP $INT0:PUSH PSWCPL P1.0POP PSWRETIEND结果:按一下单脉冲小灯亮,再按一下,小灯灭接线:INT0接单脉冲P1.0接个小灯2)用单次脉冲申请中断INT1,在中断处理程序中实现8个小灯左移点亮1次。
ORG 0000HLJMP STARTORG 0013HLJMP INT1START:MOV TCON,#04HMOV IE,#84HCLR PX1MOV A,#01HSJMP $INT1:MOV R1,#8LOOP:MOV P1,ALCALL DELAYRL ADJNZ R1,LOOPRETIDELAY:MOV R6,#200DELAY1:MOV R7,#125DELAY2:DJNZ R7,DELAY2DJNZ R6,DELAY1RETEND结果:按一下单脉冲,8个小灯左移点亮一次接线:INT1接单脉冲P1口接8个小灯3)将8051计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行单脉冲计数,并将其数值按二进制在P1口驱动LED灯上显示出来。
ORG 0000HSTART:MOV TMOD,#05HMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND结果:P1口与四个小灯相连,按单脉冲的次数在四个小灯上显示接线:(P3.4)T0接单脉冲P1.0到P1.4接4个小灯4)用CPU内部定时器T0中断方式计时,实现每1秒钟输出状态发生一次反转。
ORG 0000HLJMP STARTORG 000BHLJMP INTSTART: MOV TMOD,#01HMOV B,#0AH;即10,设循环次数10次。
第05章 MCS-51单片机的中断与定时(1-4)
2
1
TH0
;P1.0输出“0” ;P1.0输出“1”
5.2 MCS-51单片机的中断系统
五、外中断应用举例
1. 中断初始化程序
设置外中断源的触发方式 设置中断允许寄存器IE 设置中断优先级寄存器IP
2. 中断服务程序
保护现场 中断处理 恢复现场
23/65
5.2 MCS-51单片机的中断系统
【例5-3】 设外部中断0为下降沿触发方 式,高优先级,试编写中断初始化程序
5.2 MCS-51单片机的中断系统
【例5-4】 将单脉冲接到外中断0(INT0)引脚,利 用P1.0作为输出,经反相器接发光二极管。编写程 序,每按动一次按钮,产生一个外中断信号,使发 光二极管的状态发生变化,由亮变暗,或反之
P1.0 单脉冲 发生器 INT0
1
+5V
8031
26/65
5.2 MCS-51单片机的中断系统
串口:0023H
20/65
5.2 MCS-51单片机的中断系统
四、中断请求的撤除
1.定时/计数器中断请求标志TF0/TF1会自动撤除 2.串行口中断请求标志TI/RI要用指令撤除
CLR TI ;清TI标志位 CLR RI ;清RI标志位
3.负脉冲触发的外中断请求标志IE0/IE1会自动撤除 4.低电平触发的外中断请求信号需要外加电路撤除
下次课前请预习5.3节
30/65
5.3 51单片机的定时器/计数器
MCS-51单片机内部有两个16位定时/计数器 T0和T1,简称定时器0和定时器1
在特殊功能寄存器TMOD和TCON的控制下, 它们既可以设定成定时器使用,也可以设定 成计数器使用
定时/计数器有4种工作方式,具有中断功能, 可以完成定时、计数、脉冲输出等任务
单片机中的中断与定时器的原理与应用
单片机中的中断与定时器的原理与应用在单片机(Microcontroller)中,中断(Interrupt)和定时器(Timer)是重要的功能模块,广泛应用于各种嵌入式系统和电子设备中。
本文将介绍中断和定时器的基本原理,并探讨它们在单片机中的应用。
一、中断的原理与应用中断是指在程序执行过程中,当发生某个特定事件时,暂停当前任务的执行,转而执行与该事件相关的任务。
这样可以提高系统的响应能力和实时性。
单片机中的中断通常有外部中断和定时中断两种类型。
1. 外部中断外部中断是通过外部触发器(如按钮、传感器等)来触发的中断事件。
当外部触发器发生状态变化时,单片机会响应中断请求,并执行相应的中断服务程序。
外部中断通常用于处理实时性要求较高的事件,如按键检测、紧急报警等。
2. 定时中断定时中断是通过定时器来触发的中断事件。
定时器是一种特殊的计时设备,可以按照设定的时间周期产生中断信号。
当定时器倒计时完成时,单片机会响应中断请求,并执行相应的中断服务程序。
定时中断常用于处理需要精确计时和时序控制的任务,如脉冲计数、PWM波形生成等。
中断的应用具体取决于具体的工程需求,例如在电梯控制系统中,可以使用外部中断来响应紧急停车按钮;在家电控制系统中,可以利用定时中断来实现定时开关机功能。
二、定时器的原理与应用定时器是单片机中的一个重要模块,可以用于计时、延时、频率测量等多种应用。
下面将介绍定时器的工作原理和几种常见的应用场景。
1. 定时器的工作原理定时器是通过内部时钟源来进行计时的。
它通常由一个计数器和若干个控制寄存器组成。
计数器可以递增或递减,当计数值达到设定值时,会产生中断信号或触发其他相关操作。
2. 延时应用延时是定时器最常见的应用之一。
通过设定一个合适的计时器参数,实现程序的精确延时。
例如,在蜂鸣器控制中,可以使用定时器来生成特定频率和持续时间的方波信号,从而产生不同的声音效果。
3. 频率测量应用定时器还可以用于频率测量。
实验五 中断与定时(计数)器实验(Keil)
实验五中断与定时/计数器实验一、实验目的1.了解单片机中断与定时器工作原理,掌握中断与定时器程序结构;2.掌握在µVision环境中调试中断与定时器程序的方法。
二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx51。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx51.asm文件名存盘到lx51文件夹中。
ORG 0000HLJMP MAINORG 0003HMOV P2,ARL ARETIORG 0040HMAIN:MOV SP,#5FHMOV A,#0FEHSETB EASETB EX0SETB IT0SJMP $END(3)在lx51文件夹下建立新工程,以文件名lx51存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Opt ions for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择A T89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
按F5运行程序。
(6)在P3窗口的P3.2位单击鼠标(模拟INT0引脚信号),观察P2窗口变化。
(7)修改程序,使之适合字节数大于8的中断服务情况。
(8)利用单片机最小系统板演示该程序的运行情况。
2.示例及相关设置(1)建立一个文件夹:lx52。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx52.asm文件名存盘到lx52文件夹中。
单片机中断系统和定时计数器
单片机中断系统和定时计数器在单片机的世界里,中断系统和定时计数器就像是两个得力的助手,为单片机的高效运行和精确控制发挥着至关重要的作用。
接下来,让我们一起深入了解一下这两个重要的概念。
首先,咱们来聊聊中断系统。
想象一下,单片机正在专心致志地执行着一个任务,突然有个紧急情况发生了,比如外部设备传来了一个重要的数据需要立即处理。
这时候,中断系统就像是一个“紧急警报器”,让单片机暂停当前的任务,迅速去处理这个紧急情况。
处理完之后,再回到原来被中断的地方继续执行之前的任务。
中断系统的好处那可太多了。
它大大提高了单片机的工作效率。
要是没有中断,单片机就得一直按照顺序依次执行任务,可能会错过一些关键的信息或者无法及时响应紧急事件。
有了中断,单片机就能在多个任务之间灵活切换,做到“分身有术”。
中断系统一般由中断源、中断允许控制、中断优先级控制和中断响应等部分组成。
中断源就是那些能引起中断的事件,比如外部中断、定时器中断、串口中断等等。
中断允许控制就像是一道“开关”,决定了是否允许某个中断源发出中断请求。
中断优先级控制则是用来确定当多个中断同时发生时,先处理哪个中断,后处理哪个中断。
再来说说定时计数器。
在很多实际应用中,我们经常需要对时间进行精确的测量和控制,这时候定时计数器就派上用场了。
比如说,我们要控制一个小灯每隔1 秒钟闪烁一次,或者要统计外部脉冲的个数,都可以用定时计数器来实现。
定时计数器的工作原理其实并不复杂。
它就像是一个不断计数的“小闹钟”。
可以设置为定时模式或者计数模式。
在定时模式下,它根据单片机内部的时钟信号进行计数,当计数值达到设定的值时,就会产生一个定时中断。
在计数模式下,它对外部输入的脉冲进行计数,当计数值达到设定值时,也会产生中断。
比如说,我们要实现一个 1 毫秒的定时,假设单片机的时钟频率是12MHz,那么一个机器周期就是 1 微秒。
如果我们要定时 1 毫秒,就需要设置定时计数器的初值,让它经过 1000 个机器周期后产生中断。
项目三定时计数器和中断系统应用
(四)中断入口地址
表3-4 中断入口地址
地址
说明
0003H~000AH
外部中断0中断地址区
000BH~0012H
定时/计数0中断地址区
0013H~001AH
外部中断1中断地址区
001BH~0022H
定时/计数1中断地址区
0023H~002AH
串行中断地址区
定时器/计数器的设计步骤 初始化的内容如下: 设置TMOD寄存器参数 计算计数初值 计算出计数初始值并写入TH0、TL0、TH1、TL1中。 计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=M-C。其中计数最大值在不同工作方式下的值不同,具体如下:
单击此处添加文本具体内容,简明扼要地阐述你的观点
202X
项目三、定时计数器和中断系统应用
项目三、定时/计数器和中断系统应用--- 任务1.秒脉冲发生器
能力目标 1.能正确运用定时/计数器产生秒信号 2.秒脉冲发生器程序的编写 3.学会中断控制系统的应用 4.秒脉冲发生器程序的仿真调试方法 学习内容 1.掌握定时/计数器的组成及功能 2.掌握单片机内部结构资源:TH0、TL0、TH1、TL1、TMOD、TCON 3.掌握中断控制系统的概念及定时功能 4.理解预置数的用法和溢出的概念
位控制转移指令 JBC bit,rel; 若(bit)=1时,则转移到标号对应的地址,并且同时bit←0。 例如:JBC TF0,NEXT; 若定时器0数据溢出时,即TF0=1时,则转移到标号NEXT对应的地址,并且同时清定时溢出标志TF0←0,这样下次就可以重新定时/计数。
比较转移指令 CJNE A,#data,rel; ≠data,PC+3+rel跳转到目标地址, =data,PC+3顺序向下执行。 CJNE A,direct,rel; CJNE Rn,#data,rel; CJNE @Ri,#data,rel;
51单片机的功能单元(中断定时器等)
1 1
D C Q Q
D0
1
端口锁存器应为“ 。 端口锁存器应为“1”。 3、替代功能 、
P3.0 TXD RXD INT0 INT1 P3.4 P3.5 P3.6 P3.7 T0 T1 WR RD P3.1 P3.2 P3.3
P3W P3R2
பைடு நூலகம்
变异输入 图3、P3口内部结构
10
5.1.5 P0~P3端口功能总结 P0~P3端口功能总结 使用中应注意的问题: 使用中应注意的问题: P0 ~ P3 口都是并行 I/O 口 , 但 P0 口和 P2 口 还可用来构建数 口都是并行I/O I/O口 口和P 电路中有一个MUX 据总线和地址总线,所以电路中有一个MUX,进行转换。 据总线和地址总线,所以电路中有一个MUX,进行转换。 而P1口和P3口无构建系统的数据总线和地址总线的功能, 口和P 无构建系统的数据总线和地址总线的功能, 因此,无需转接开关MUX MUX。 因此,无需转接开关MUX。 只有P 只有P0口是一个真正的双向口,P1~P3口都是准双向口。 是一个真正的双向口 双向口, 都是准双向口 准双向口。 原因: 口作数据总线使用时, 为保证数据正确传送, 原因 :P0 口作数据总线使用时 , 为保证数据正确传送 , 需 解决芯片内外的隔离问题, 解决芯片内外的隔离问题 , 即只有在数据传送时芯片内外 才接通; 否则应处于隔离状态。 为此, 才接通 ; 否则应处于隔离状态 。 为此 , P0 口的输出缓冲器 应为三态门。 应为三态门。 P3 口具有第二功能 。 因此在 P3 口电路增加了第二功能控制 口具有第二功能。因此在P 逻辑。这是P 口与其它各口的不同之处。 逻辑。这是P3口与其它各口的不同之处。
18
5.1.6
51单片机中断系统详解
51单片机中断系统详解51 单片机中断系统详解(定时器、计数器)51 单片机中断级别中断源INT0---外部中断0/P3.2 T0---定时器/计数器0 中断/P3.4 INT1---外部中断1/P3.3 T1----定时器/计数器1 中断/P3.5 TX/RX---串行口中断T2---定时器/计数器 2 中断第5 最低4 5 默认中断级别最高第2 第3 第4 序号(C 语言用) 0 1 2 3 intrrupt 0中断允许寄存器IE位序号符号位EA/0 ------ET2/1 ES ET1 EX1 ET0 EX0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 EA---全局中允许位。
EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。
EA=0,关闭全部中断。
-------,无效位。
ET2---定时器/计数器2 中断允许位。
ET2=1, 打开T2 中断。
ET2=0,关闭T2 中断。
关,。
ES---串行口中断允许位。
关,。
ES=1,打开串行口中断。
关,。
ES=0,关闭串行口中断。
关,。
ET1---定时器/计数器1 中断允许位。
关,。
ET1=1,打开T1 中断。
ET1=0,关闭T1 中断。
EX1---外部中断1 中断允许位。
EX1=1,打开外部中断1 中断。
EX1=0,关闭外部中断1 中断。
ET0---定时器/计数器0 中断允许位。
ET0=1,打开T0 中断。
EA 总中断开关,置1 为开;EX0 为外部中断0 (INT0) 开关,。
ET0 为定时器/计数器0(T0)开EX1 为外部中断1(INT1)开ET1 为定时器/计数器1(T1)开ES 为串行口(TX/RX)中断开ET2 为定时器/计数器2(T2)开ET0=0,关闭T0 中断。
EX0---外部中断0 中断允许位。
EX0=1,打开外部中断0 中断。
EX0=0,关闭外部中断0 中断。
中断优先级寄存器IP位序号位地址------PS/0 PT1/0 PX1/0 PT0/0 PX0/0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -------,无效位。
定时计数器和中断系统的综合应用实验报告收获与体会
定时计数器和中断系统的综合应用实验报告收获与体会这是一个比较开放性的问题,我尝试给出一个比较全面的回答,希望能够帮到你。
一、实验目的通过对定时计数器和中断系统的综合应用实验,掌握以下技能:1. 掌握定时计数器和中断系统的原理及其在嵌入式系统中的应用。
2. 熟悉51单片机中定时器的使用方法。
3. 熟悉51单片机中中断系统的使用方法。
4. 熟悉C语言中的定时器和中断编程。
二、实验内容1. 实验原理定时计数器是嵌入式系统中非常重要的一个部分,它可以周期性的计时,通过计数值的比较输出指定的脉冲信号。
51单片机中的定时器有4个,分别为Timer0、Timer1、Timer2、Timer3。
不同的定时器有不同的计数器位数和工作模式,可以根据应用场景进行选择。
中断系统是嵌入式系统中另一个非常重要的部分,可以在特定的条件下自动触发,优先处理中断事件。
在51单片机中,中断分为外部中断和定时器中断。
通过中断系统,可以高效地实现对各种外部事件的实时响应。
2. 实验步骤本实验分为两个阶段,第一阶段设计一个定时计数器程序,通过P1口的LED灯输出定时器的计数值,第二阶段在第一阶段的基础上,结合中断系统,设计一个定时器中断程序,通过P0口的LED灯输出中断事件的计数值。
第一阶段:(1)配置定时器,设置定时器的工作模式和计数器初值。
(2)在定时器的中断处理函数中,实现计数器值的输出。
(3)通过P1口连接LED灯,输出计数器值。
第二阶段:(1)配置定时器和中断系统,设置定时器的工作模式和计数器初值,以及中断的优先级和中断处理函数。
(2)在中断处理函数中,实现计数器值的输出和中断事件计数值的计算。
(3)通过P0口连接LED灯,输出中断事件的计数值。
三、实验结果通过实验,我掌握了51单片机中定时计数器和中断系统的使用方法,熟悉了C语言中的定时器和中断编程。
在第一阶段的实验中,我成功地输出了定时器的计数值,通过LED灯显示在P1口。
单片机定时器 中断
定时/计数器1、定时/计数器的结构定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。
此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。
2、定时/计数器的功能选择T0和T1都具有定时和计数两种功能。
在TMOD中,有一个控制位C/T,分别用于选择T0和T1是工作于定时器方式,还是计数器方式。
计数功能里,计数脉冲的频率不能高于振荡脉冲频率的1/24。
定时功能里,计数频率为振荡频率的1/12。
3、工作方式控制寄存器TMODTMOD不能位寻址,只能有用字节传送指令设置其内容。
TMOD的各位定义如下:D7D6D5D4D3D2D1D0 GATE C/T M1M0GATE C/T M1M0定时器1定时器0GATE位:门控位。
该位置位时只有在INTn引脚置高及TRn控制置位时才可打开定时器/计数器,这时可用于测量在INTn引脚出现的正脉冲的宽度。
该位清零时,置位TR1即可打开定时器/计数器。
C/T:计数/定时功能选择位。
控制定时器是用作定时器或计数器,该位清零则用作定时器(从内部系统时钟输入);该位置位则用作计数器(计数脉冲从Tn引脚输入)。
M1和M0:定时器模式选择位:M1M0定时器模式00模式0:TLn中低5位与THn中的8位构成13位计数器01模式1:16位定时器/计数器,无预分频器10模式2:8位自装载定时器,当溢出时将THn存放的值装入TLn11模式3:定时器0此时作为双8位定时/计数器。
TL0作为一个8位定时器/计数器,通过标准定时器0控制位控制。
TH0仅作为一个8位定时器,由定时器1控制位控制。
在这种模式下定时/计数器T1关闭。
4、定时器控制寄存器TCONTCON各位的定义如下:D7D6D5D4D3D2D1D0 TF1TR1TF0TR0IE1IT1IE0IT0 TF1:定时器1溢出标志。
单片机实验3 中断、定时器计数器实验
西南科技大学实验报告课程名称:单片机原理及应用A实验名称:中断、定时器/计数器实验姓名:学号:班级:生医1401指导教师:雷华军西南科技大学信息工程学院制实验题目数码管动态扫描显示驱动、键盘动态扫描驱动一、实验目的1、熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操作,会使用HEX文件进行单片机的仿真。
2、了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和计数,利用定时器进行延时等。
3、进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将0~1000的数字进行显示。
4、掌握利用单片机产生矩形方脉冲的相关原理。
二、实验原理1、定时器结构和原理图①上图①为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。
反相器,或门,与门共同构成启/停控制信号。
TH 和TL为加1计数器,TF为中断标志。
每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。
计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。
2、定时器工作方式定时器共有四种工作方式分别为方式0——方式3。
方式0:13位计数器,最大计数值为213个脉冲。
方式1:16位计数器,最大计数值为216个脉冲。
方式2:8位自动重装计数器。
该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。
方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。
3、定时器间隔1ms产生一个脉冲利用单片机1 P3.0口进行脉冲的输出,通过定时器进行端口定时控制,实现每1ms高低电平变换。
就可以实现一个占空比为50%的矩形脉冲输出。
对于定时器的定时功能实现,需要进行定时器模式选择,定时器初值设定。
4、利用中断进行脉冲的计数将单片机1 P3.0口输出的脉冲连接到单片机2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数。
微机原理及单片机应用技术第8章 80C51的中断与定时计数器
定时/计数器的结构
T1引脚
TH1
TL1
TH0
T0引脚
TL0
机器周 期脉冲
TH1、TL1
内部总线
TH0、TL0
TF1 TR1 TF0 TR0 GATE C/T M1 M0 GATE C/T M1 M0
TCON
TMOD
TCON
外部中断相关位
T1方式
T0方式
TMOD
2020/10/27
21
计数脉冲源
定时/计数器的工作原理
76543210
TCON TF1 TR1 TF0 TR0
字节地址:88H
TFx:Tx溢出标志位。响应中断后TFx有硬件自动清0。 用软件设置TFx可产生同硬件置1或清0同样的效果。
TRx:Tx运行控制位。置1时开始工作;清0时停止工作。 TRx要由软件置1或清0(即启动与停止要由软件控制)。
2020/10/27
2020/10/27
24
定时/计数器的控制示意图
M1M0 工作方式
说
明
00 方式0 13位定时/计数器
01 方式1 16位定时/计数器
10 方式2 8位自动重装定时/计数器
11
方式3
T0分成两个独立的8位定时/计数器; T1此方式停止计数
注意:TMOD不能进行位寻址
2020/10/27
26
控制寄存器TCON
第八章 80C51的中断系统与定时计数器
8.1 80C51单片机的中断系统 8.2 80C51中断处理过程 8.3 80C51单片机的串行口
8.1 80C51单片机的中断系统
5.1.1 80C51中断系统的结构
中断的概念
与子程序调用相似 但有本质的区别
51单片机内部定时器和中断系统以及编写第一个简单的定时器实验程序
51单片机内部定时器和中断系统以及编写第一个简单的定时器实验程序上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作原理与开发流程。
这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。
通过该讲,读者可以掌握定时器的工作原理和单片机的中断系统。
从而设计定时器计数程序和中断服务程序。
一、原理简介首先让我们举闹钟为例,将它定时在一分钟后闹铃,这就需要秒针走一圈(60 次)。
即一分钟时间转化为秒针走的次数,也就是计数的次数,计数到了60 次然后闹铃,而每一次计数的时间是1 秒。
单片机内部的定时/ 计数器跟闹钟类似,可以通过编程来设定要定时的时间、定时时间到了进行相应的操作。
那么在单片机内部计数一次的时间是多少呢,51 单片机输入的时钟脉冲是由晶体振荡器的输出经12 分频后得到的,所以定时器也可看作是对计算机机器周期的计数器。
因为每个机器周期包含12 个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号。
故其频率为晶振频率的1/12。
如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间刚好为1μs。
在本实验套件中采用的是11.0592M 的晶振,故每接收一个输入脉冲的时间约为1.085μs。
实现精确定时在实际项目应用中非常重要,因为往往需要用到精确定时一段时间,然后定时时间到的时刻做相应的任务。
那如何编程实现定时时间呢?首先先简单介绍下本实验板上单片机(STC89C52)内的定时器资源。
STC89C52 内有三个定时/ 计数器,分别为T0、T1 和T2。
其中T0、T1 工作方式一样,一并介绍。
T2 的工作方式稍有区别,这里不做介绍,实验套件光盘中有实际应用程序。
同时,单片机中的定时器和计数器是复用的,计数器是记录外部脉冲的个数,而定时器则是由单片机内部时钟提供的一个非常稳定的计数源。
本讲中,以T0、T1 作为定时器来进行实例介绍使用。
微机原理与单片机接口技术(第2版)李精华 第6章微处理器中断及定时计数器应用设计
断的查询顺序是“外部中断0→定时/计数器T0→外部中断1→定时/计数器T1→串行口中断”。 (5)若程序正在执行读/写IE和IP指令,则CPU执行该指令结束后,需要再执行一条其他指令才可
处理中断源的程序称为中断处理程序。 CPU执行有关的中断处理程序称为中断处理 。而返回断点的过程称为中断返回,中断响应 和处理过程如图6-1所示。
图6-1 中断响应和处理过程
4
2.中断的处理过程
①接收中断请求。 ②查看本级中断屏蔽位,若该位为1,则本级中断源参与优先级排队。 ③中断优先级选择。 ④处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现 行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中 断的指令地址和处理机当前的主要状态信息存放在此单元中。 ⑤中断部件根据中断级又指定另外的主存单元,从这些单元中取出处理 机新的状态信息和该级中断控制程序的起始地址。 ⑥执行中断控制程序和相应的中断服务程序。 ⑦执行完中断服务程序后,利用专用指令使处理机返回被中断的程序或 转向其他程序。
7.中断屏蔽
对各中断级设置相应的屏蔽位。只有屏蔽位为1时,该中断级才能参加 中断优先级排队。中断屏蔽位可由专用指令建立,因而可以灵活地调整中断 优先级。有些机器针对某些中断源也设置屏蔽位,只有当屏蔽位为1时,相 应的中断源才起作用。。
6.2 单片机中断系统概述
51系列不同型号单片机的中断源的数量是不同的(5~11个) ,本节以8051单片机的中断系统为例分析51系列单片机的中断系 统,其它各种51单片机的中断系统与之基本相同,8051单片机的 中断系统结构框图如图6-2所示。8051单片机有5个中断源,2个中 断优先级,可以实现二级中断服务程序嵌套,每个中断源可以编 程为高优先级或低优先级中断,允许或禁止向CPU请求中断。与中 断系统有关的特殊功能寄存器有中断允许控制寄存器IE、中断优 先级控制寄存器IP和中断源寄存器TCON、SCON。
51单片机(STC89C52)的中断和定时器
51单⽚机(STC89C52)的中断和定时器STC89C51/STC89C52 Timer内部不带振荡源, 必须外接晶振采⽤11.0592MHz,或22.1184MHz,可⽅便得到串⼝通讯的标准时钟.STC89和STC90系列为12T, STC11/STC12系列为1T, 也就是⼀个指令⼀个机器周期, 这些都需要外置晶振; STC15系列有内置晶振.中断中断允许控制寄存器 IE字节地址A8H, CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的D7D6D5D4D3D2D1D0EA—ET2ES ET1EX1ET0EX0EA (IE.7): 整体中断允许位, 1:允许ET2(IE.5): T2中断允许位, 1:允许(for C52)ES (IE.4): 串⼝中断允许位, 1:允许ET1(IE.3): T1中断允许位, 1:允许EX1(IE.2): 外部中断INT1允许位, 1:允许ET0(IE.1): T0中断允许位, 1:允许EX0(IE.0): 外部中断INT0允许位, 1:允许52单⽚机⼀共有6个中断源, 它们的符号, 名称以及各产⽣的条件分别如下1. INT0 - 外部中断0, 由P3.2端⼝线引⼊, 低电平或下降沿引起2. INT1 - 外部中断1, 由P3.3端⼝线引⼊, 低电平或下降沿引起3. T0 - 定时器/计数器0中断, 由T0计数器计满回零引起4. T1 - 定时器/计数器1中断, 由T1计数器计满回零引起5. T2 - 定时器/计数器2中断, 由T2计数器计满回零引起 <--这个是52特有的6. TI/RI - 串⾏⼝中断, 串⾏端⼝完成⼀帧字符发送/接收后引起定时器中断51单⽚机内部共有两个16位可编程的定时器,即定时器T0和定时器T1, 52单⽚机内部多⼀个T2定时器. 它们既有定时功能,也有计数功能。
可通过设置与它们相关的特殊功能寄存器选择启⽤定时功能还是计数功能. 这个定时器系统是单⽚机内部⼀个独⽴的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作⽤,CPU⼀旦设置开启定时功能后,定时器便在晶振的作⽤下⾃动开始计时,但定时器的计数器计满后,会产⽣中断。
51单片机定时器、串口、中断
51单⽚机定时器、串⼝、中断⽂章⽬录MCS-51功能单元⼀、定时器&计数器1. 数量:两个可编程的16位的定时器/计数器T0和T1;都是16位加法计数结构;分为⾼8位和低8位;TH0、TL0,TH1、TL1;定时器/计数器T0、T1是80C51的中断源之⼀,当数据寄存器溢出,则向CPU申请中断。
数据寄存器的复位状态为0。
为使计数值或定时值满⾜⾃⼰的要求,需预先将数据寄存器赋值,称为初值设定,中断中也要重新设定初值。
2. 定时器和计数器本质:都是计数器,对下降沿进⾏计数,计数达到溢出后置为标志位或者进⼊中断;3. 两者的区别:定时器是对内部的机械周期脉冲进⾏计数,每个脉冲都是⼀个机械周期;定时时间=机器周期*(2^L-初值) (L=13,16,8)计数器则是通过外部IO⼝进⾏脉冲计数,⼀个脉冲加⼀个数;对应IO⼝:T0-P3.4,T1-P3.5;计数长度:计数长度=(2^L-初值) (L=13,16,8)两者的模式切换通过TMOD控制4. TMOD结构图:5. TMOD详解GATE:门控位GATE =1,由中断引脚INT0(P3.2)、INT1(P3.3)和TCON中的位TR0、TR1共同控制来启动定时器/计数器GATE =0,由TR0和TR1置位来启动定时器/计数器**(⼀般为0)**C/!T:模式选择位:1时,计数器模式;0时,定时器模式;M0 & M1共同控制⼯作⽅式:项⽬开发⼀般⽤01,考试⼤概率考00;6. 启动停⽌与中断控制寄存器TCONTFx:定时器或者计数器溢出时置位1,请求中断,中断程序进⼊后⾃动清零;TRx:定时器启动控制位,当其等于1时定时器/计数器启动;7. 中断允许控制寄存器:IEETx:定时器/计数器的中断允许位EA:CPU总中断的允许位8. 定时器/计数器使⽤:(重点)⼯作⽅式的设置://设置定时器0⼯作在16位模式//C语⾔TMOD=0x01; //定时器//汇编MOV TMOD, #01H;计数初值的计算+装载:伪代码://机械周期1us,设置500us中断⼀次为FE0C//C语⾔TH0=0xFE;TL0=0x0C;//汇编MOV TH0, #0FEH ;MOV TL0, #0cH ;中断允许位的设置:伪代码://CEA=1;ET0=1;//assemblySETB EA ;turn on all interruptSETB ET0 ;turn on 0 interrupt开启定时器:伪代码://cTR0=1;//assemblySETB TR0 ;turn onCLR TR0 ;turn off !9. 使⽤实例:定时器使⽤⽅式(中断⽅式):ORG 0000H;AJMP MAIN;ORG 001BH;AJMP IRQ1;MAIN:MOV TMOD, #00H ;⼯作模式0,⾼8+低5MOV TH1, #0FCHMOV TL1, #03HSETB TR1;SETB ET1;SETB EA;AJMP $;IRQ1:MOV TMOD, #00HMOV TH1, #0FCHCPL P1.0RETI ;中断返回⼀定要加!计数器使⽤⽅式(中断⽅式):ORG 0000H;AJMP MAIN;ORG 001BH;AJMP IRQ1;MAIN:MOV TMOD, #04H ;计数器模式MOV TH1, #0FCH ;⼀千个下降沿中断⼀次 MOV TL1, #03HSETB TR1;SETB ET1;SETB EA;AJMP $;MOV TMOD, #00HMOV TH1, #0FCHCPL P1.0RETI ;中断返回⼀定要加!查询⽅式则是判断TF溢出标志,变⾼后进⼊⾃定义韩式处理数据,清空标志;⼆、并⾏⼝&串⾏⼝并⾏⼝:并⾏传输数据(不常⽤)占据资源⼤,错误率⾼,但快串⾏⼝:(重要)稳定,占据IO⼝⼩,准确,稍微慢1. 串⾏⼝控制寄存器SCON:SM0和SM1:串⾏⼝⽅式选择位;00-移位寄存器⽅式01-8位UART,波特率可变10-9位UART,波特率为fosc/64或fosc/32(PCON决定)11-9位UART,波特率可变⽅式1为常⽤通信⽅式;⽅式2、3为多机通信,⽅式0为移位寄存器,不常⽤;重要标志位:TI:发送完成标志RI:接收完成标志2. 串⼝波特率与定时器1关联,公式如下:波特率=2^SMOD * fosc / [32 * 12(2^K-初值)];(fosc系统主频)波特率翻倍寄存器:PCON只有最⾼位(SMOD)有效:为1时波特率翻倍,为0时不翻倍⽅式1串⼝通信接收代码:ORG 0000HLJMP MAINORG 0023HLJMP RX_TIMAIN:MOV SCON, #50HMOV PCON, #00HMOV TMOD, #02HMOV TH1, #0FDHMOV TL1, #0FDHSETB TR1SETB EASETB ESRX_TI:PUSH ACCMOV TH1, #0FDHMOV TL1, #0FDHMOV A, SBUF;处理POP ACCRETI发送套⽤代码:MOV SBUF, AJNB TI, $CLR TIRET三、中断系统所有中断控制位:TCON:TF1、TF0:定时器溢出标志、请求中断:IE1、IE0:外部中断溢出请求:IT1、IT0:外部中断触发⽅式选择-1下降沿触发、0低电平触发SCON:内部TI、RI触发接收发送中断。
第六章 AT89C51中断系统与定时
1 0 1 0
T1 TX RX
PS ES EA
1 0
自 然 优 先 级
中断 矢量地址 硬件查询 源允许
低 级 中 断 请 求
各中断 总允许 源允许
优先级
PC
1.中断源(5个) 向CPU发出中断请求的来源,或引起中断的原因称为中断源。 (1). 外部中断类 外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的, 可以通过两个固定引脚来输入到单片机内的信号,即外部中0(INT0)和外 部中断1(INT1)。 外部中断0(INT0)请求信号输入引脚为P3.2。当CPU检测到P3.2引脚上 出现有效的中断信号时,向CPU申请中断。 外部中断1(INT1)请求信号输入引脚为P3.3 。当CPU 检测到P3.3 引脚上出现有效的中断信号时,向CPU申请中断。 (2). 定时中断类 定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的, 即定时器0(T0)中断和定时器1(T1)中断。 当定时器对单片机内部定时脉冲进行计数而发生计数溢出时,即表明定 时时间到,申请中断;或者当定时器对单片机外部计数脉冲进行计数而 发生计数溢出时,即表明计数次数到,申请中断。 片内定时/计数器T0溢出中断(TF0):当定时/计数器T0发生溢出时, 置位TF0,并向CPU申请中断。 片内定时/计数器T1溢出中断(TF1):当定时/计数器T1发生溢出时, 置位TF1,并向CPU申请中断。 (3). 串行口中断类 串行口中断是为接收或发送串行数据而设置的。 串行接口中断,包括RI 或TI。当发送或接收完一帧数据时,向CPU 申请中断。
D7 EA
D6 -
D5 -
D4 ES
D3 ET1
D2 EX1
D1 D0 ET0 EX0
第4章 MCS-51单片机中断、定时系统及串行数据通信
表4-2 中断源入口地址表 中断源 外部中断0 中断服务程序入口地址 0003H
定时器/计数器T0 外部中断1 定时器/计数器T1 串行口中断
000BH 0013H 001BH 0023H
单片机的两个相邻中断源中断服务程序入口地址 相距只有8个单元,一般中断服务程序容纳不下,因此 在该中断的入口地址处放一条长跳转指令LJMP,这 样就可以转到64KB的任何可用区域了。在2KB范围内 转移可用短跳转AJMP指令。
表4-1 同级中断源优先级排列顺序
中断源
外部中断0(IE0) 定时器/计数器T0中断(TF0) 外部中断1(IE1) 定时器/计数器T1中断(TF1)
同级内的优先级
最低级
串行口中断(RI+TI)
最高级
当单片机系统复位后,IE中各位均被清0,所有 中断源禁止;IP中各位均被清0,5个中断源均为低优 先级。
SET SET
SET
ET0 ET1
EA
;定时器/计数器0允许中断 ;定时器/计数器1允许中断
;CPU开中断
用字节操作指令 MOV IE,#8AH 或 MOV A8H,#8AH
(2)中断优先级控制寄存器(IP) MCS-51单片机系统的中断源有两个优先级,每 个中断源均可由中断优先级寄存器IP来设置优先级别。 IP的字节地址为0B8H,位地址为0B8H~0BFH。与 中断有关的控制位如下: 位地址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H
TMOD是定时器的工作方式寄存器,TCON是控制 寄存器,用于对T0和T1的管理和控制。
2.定时器/计数器的结构的工作原理 16位定时器/计数器的核心是一个加1计数器,如图 4-4所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、中断源向量地址
INT0: 0003H T0: 000BH INT1: 0013H T1: 001BH 串行口:0023H
二、中断处理过程
中断处理过程:中断请求、中断响应、中 断服务和中断返回。
1、中断请求
中断源只有在有请求时,CPU才可能响应它,不 同的中断源产生中断请求的方式是不同的 。外部中断
单片机实用教程
第4章 AT89S51单片机中断 系统和定时/计数器
本章主要内容
1、中断概述 2、外部中断的应用 3、定时/计数器 4、键盘接口
一、中断的概述
1、中断概念 单片机的CPU正在处理某个任务时,遇到其它事件请求
(如定时器溢出),暂时停止目前的任务,转去处理请求的 事件,处理完后再回到原来的地方,继续原来的工作,这一 过程称为“中断”,我们把请求的事件称为中断源。
IE0——外部中断INT0的中断请求标志。 IT1——外部中断INT1的触发方式选择位。功能与IT0
类似。
IE1——外部中断INT1的中断请求标志。功能与IE0类 似。
TF0——定时/计数器T0的中断请求标志。 TF1——定时/计数器T1的中断请求标志。
(2)IE——中断允许控制寄存器
IE
D7
D6
计数器是加法计数器,计满时溢出,并产 生溢出标志(TF0、TF1) 。
二、与定时器有关的SFR
1.定时/计数器控制寄存器TCON
TCON D7 D6 D5 D4 D3 D2 D1 D0 位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位定义 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT1
(3)M1M0——工作方式选择位。 M1M0=00B,方式0——13位的定时/计数器。 M1M0=01B,方式1——16位的定时/计数器。 M1M0=10B,方式2——8位的定时/计数器,初 值自动重装。 M1M0=11B,方式3——两个8位的定时/计数器, 仅适用于T0。
例:在前面做过的循环彩灯电路的基础上, 现在要求:通过一个按键控制,每按一次 彩灯移一位。
360Ω
+5V
最小系统
P3.2
S +5V 10K
按键信号加到外部中断0的引脚P3.2上,当S不 按下时,P3.2引脚为高电平,按下则为低电平,在 按键的过程中P3.2引脚产生中断请求信号
程序如下:
ORG 0000H LJMP SETUP ORG 0003H MOV P1, A RL A RETI ORG 0030H SETUP:MOV A,#0FEH
产生请求是在外中断的引脚上加低电平或下降沿信号, 而定时/计数器中断请求是在内部的计数单元计满溢出 时产生,串行口中断请求是在完成一次发送或接收时 产生。
2、中断响应 (1)条件
中断源的中断已经被允许 ,中断允许标志和总的 中断允许标志EA都被设置为“1”。
CPU此时没有响应同级或高级中断。 CPU正处于执行某一条指令的最后一个机器周期。 (并且不是对IE、IP进行访问的指令或者是中断返回 指令RETI )
;②(SP)→PC7~0,SP-1→SP。 中断返回时完成的操作:
(1)恢复断点地址。 (2)开放同级中断 。
三、外部中断应用的一般步骤
1、硬件 把中断请求信ຫໍສະໝຸດ 加到单片机的中断引脚上2、软件 中断的初始化 工作方式选择 SETB IT0 开中断 SETB EX0 SETB EA 提供中断入口地址 编写具体的中断服务程序。
位地址 AFH —
位定义 EA
—
D5
D4
D3
D2
D1
D0
— ACH ABH AAH A9H A8H
—
ES ET1 EX1 ET0 EX0
EX0——外部中断0中断允许控制位。EX0=1, INT0 被允许(开中断),EX0=0,外部中断0被禁止 (关中断)。
ET0——定时/计数器T0中断允许控制位。
EX1——外部中断INT1中断允许控制位。 ET1——定时/计数器T1中断允许控制位。 ES——串行口中断允许控制位。 EA——中断系统总允许控制位 。
D1 D0 M1 M0
高4位控制T1,低4位控制T0 (1)GATE——门控位。GATE一般情况下设置为 0,此时定时/计数器的运行仅受TR0/TR1控制。 (2)C/T——定时/计数选择位。
C/T=0,为定时方式,对内部的机器周期计数。 C/T=1,为计数方式,对引脚上的脉冲信号计数, 负跳变有效。
(2)响应中断时的操作 保护断点地址。 撤除该中断源的请求标志。 关闭同级中断。 将该中断源的入口地址送给PC,程序将
转到该程序的入口地址处运行。
3、中断服务 中断服务就是中断源
请求CPU做的任务,需要 编程者用指令来实现。
4、中断返回 中断返回和子程序的返回类似,需要执行
一条返回指令RETI RETI ;①(SP)→PC15~8,SP-1→SP。
(3)中断优先级控制寄存器
IP
D7
D6
D5
D4
D3
D2
D1
D0
位地址 —
—
— BCH BBH BAH B9H B8H
位定义 —
—
—
PS PT1 PX1 PT0 PX0
PX0——外部中断INT0中断优先级控制位。 PT0——定时/计数器T0优先级控制位。 PX1——外部中断INT1中断优先级控制位。 PT1——定时/计数器T1优先级控制位。 PS——串行口优先级控制位。
2、MCS-51系列单片机的中断系统
3、与中断系统有关的SFR (1)TCON——中断控制寄存器
TCON D7
D6
D5
D4
D3
D2
D1
D0
位地址 8FH
8DH
8BH 8AH 89H 88H
位定义 TF1
TF0
IE1 IT1 IE0 IT0
IT0——外部中断INT0的触发方式选择位。 IT0=0, 低电平触发方式 ;IT0=1,下降沿触发方式 。
SETB IT0 SETB EX0 SETB EA MAIN: LJMP MAIN INEX0P:MOV P1,A
RL A RETI END
一、定时器概述
两个16位的定时/计数器T0和T1。 它们本质上是计数器。在做计数器使用时
计数引脚上的脉冲信号(下降沿),在做定时 器使用时数内部的机器周期 。
TR0——定时/计数器T0运行控制位。 TR0=1,启动 T0运行(与TMOD中的GATE位有关), TR0=0,T0停止运行。
TR1——定时/计数器T1运行控制位。功能同TR0。
2、定时/计数器工作方式控制寄存器TMOD
TMOD D7 D6 D5 位定义 GATE C/T M1
D4 D3 D2 M0 GATE C/T