定时计数器和中断
定时器中断触发条件
定时器中断触发条件
定时器中断触发条件是指当定时器计数器的值达到预设的目标值时,会产生中断信号,即触发定时器中断。
具体来说,定时器中断触发条件包括两个方面:
1. 定时器计数器的值达到目标值:定时器是一种可以定期产生中断的硬件设备,它通过一个计数器来记录时间。
当计数器的值达到预设的目标值时,就会触发定时器中断,通知CPU进行处理。
2. 定时器中断使能:在使用定时器中断时,需要使能相应的中断功能。
通常在代码中会设置定时器中断掩码,使得定时器中断可以被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种工作方式,具有中断功能, 可以完成定时、计数、脉冲输出等任务
systick的工作原理
systick的工作原理
SysTick是ARM Cortex-M系列处理器的一个内置定时器,它
用于提供系统时钟,并可以用于执行延时操作。
SysTick定时器的工作原理如下:
1. SysTick定时器由一个24位的计数器组成,它可以以一定的时钟频率自动递减。
2. SysTick寄存器控制计数器的初始化、中断使能和计数器使能。
3. 当SysTick计数器递减到0时,会触发SysTick定时器中断。
4. 在中断处理程序中,可以执行需要的操作,比如更新系统时间、执行周期性的任务或实现延时等。
5. 当中断处理程序返回后,SysTick计数器会被重新加载为初
始值,并开始自动递减,重复上述过程。
SysTick定时器可以用于各种应用场景,例如:
- 实现精确的延时操作,可以使用 SysTick 的中断计数来进行
准确的时间测量;
- 执行周期性的任务,可以使用 SysTick 的中断周期来触发任
务执行;
- 实现系统定时器,可以用 SysTick 的中断来更新系统时间,
例如操作系统;
- 在低功耗应用中,可以利用 SysTick 来唤醒处理器从睡眠状态中恢复。
总之,SysTick定时器通过自动递减计数器并触发中断来提供系统时钟和执行延时操作的能力。
它是ARM Cortex-M处理器中非常有用的内置定时器。
STM32的定时器定时时间计算(计数时间和中断定时时间)
STM32的定时器定时时间计算(计数时间和中断定时时间)时基单元可编程⾼级控制定时器的主要部分是⼀个16位计数器和与其相关的⾃动装载寄存器。
这个计数器可以向上计数、向下计数或者向上向下双向计数。
此计数器时钟由预分频器分频得到。
计数器、⾃动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运⾏读写仍然有效。
时基单元包含:●计数器寄存器(TIMx_CNT)●预分频器寄存器 (TIMx_PSC)●⾃动装载寄存器 (TIMx_ARR)●重复次数寄存器 (TIMx_RCR)⾃动装载寄存器是预先装载的,写或读⾃动重装载寄存器将访问预装载寄存器。
根据在TIMx_CR1寄存器中的⾃动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被⽴即或在每次的更新事件UEV时传送到影⼦寄存器。
当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于0时,产⽣更新事件。
更新事件也可以由软件产⽣。
随后会详细描述每⼀种配置下更新事件的产⽣。
计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1寄存器中的计数器使能位(CEN)时,CK_CNT才有效。
(更多有关使能计数器的细节,请参见控制器的从模式描述)。
注意,在设置了TIMx_CR寄存器的CEN位的⼀个时钟周期后,计数器开始计数。
预分频器描述预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。
它是基于⼀个(在TIMx_PSC寄存器中的)16位寄存器控制的16位计数器。
因为这个控制寄存器带有缓冲器,它能够在运⾏时被改变。
新的预分频器的参数在下⼀次更新事件到来时被采⽤。
尤其注意的是当发⽣⼀个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄存器中的UIF位)。
●重复计数器被重新加载为TIMx_RCR寄存器的内容。
●⾃动装载影⼦寄存器被重新置⼊预装载寄存器的值(TIMx_ARR)。
单片机定时计数中断时间计算方法
先计算机器周期Tcy,TX-1C 实验板上时钟频率为11.0592MHZ,那么
机器周期为12*(1/11059200)=1.0851us,若t=5ms,那么
N=5000/1.0851=4607,这是晶振在11.0592MHZ下定时5ms时初值的
由于定时器方式0为8位计数器,即最多能装载的数为2^8=256个,当TL0和TH0的初始值为为时,最多经过256个机器周期该计数器就会溢出,若使用12MHZ晶振,也只有256US的时间,若使用11.0592晶振,那么计算器周期时,晶振自身产生的误差也已经不少了再加上累积过程,误差便会更大。
总结如下:当用定时器方式0时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么计数的个数N=t/Tcy,装入THX和TLX中的数分别为
2.定时器 方式2
定时器0 方式 2 特别适合用做较精确的脉冲信号发生器,因为其只有8位计数器,当定较长时间时同样会给编写程序带来麻烦,同时也可能影响到精度,当我们使用一般的较精确定时时,用方式0 或方式1就完全足够了若要做确的频率较高的信号发生器时可以选用方式2,但要注意,此时的晶振频率务必要选择精准,一定要是12的整数倍,因为这样计算机器周期时才不会产生误差。
THX=256-N TLX=256-N
先计算机器周期Tcy,TX-1C实验板上时时钟频率为11.0592MHZ,那么机器周期为
12*(1/11059200)=1.0851us,以计时1s为例,当计250个数时,需耗时1.0851*250=271.27us.再来计算定时1s计数数器需要溢出多少次,即1000000/271.125==3686,这是晶振在11。0592MHZ下定时1s时计数器溢出次数方法。当晶振为12MHZ时,计算起来就非常方便了,用同样方法可算得计数器溢出 次数为4000次。
中断计时器
定时计数器在单片机内部有两个16位的定时、计数器T0和T1,可对外部事件进行计数或计时处理。
对于高档的单片机,则有3个定时计数器。
一定时计数器通常有4种工作方式。
1,方式0。
定时计数器T0和T1都可以工作于方式0,此时的定时计数器都只有13位,其中,TH为高8位,TL则只是用低五位。
当C/T=1时,输入的脉冲信号用于计数,而C/T=0时,输入的脉冲信号用于计时。
TR为控制信号,控制计数开关的通与断,TR=1时允许进行计数。
而在GA TE=1时,计数开关的动作还要受INT1的控制。
若要免除该控制,可在初始化时,把GATE置为0.2,方式,1。
定时计数器T0和T1都可以工作于方式1,此时与方式0的区别在于两者的计数器位数不同,方式一的计数器位数是16位的。
3,方式,2。
定时计数器T0和T1都可以工作于方式2,此时的计数器只有8位,此时TH 用于作为时间常数的后备寄存器。
在方式0和方式1中,计数器计时溢出时,TH和TL将被全部复位清零,若继续使用则需由程序重新装入时间常数。
对于方式2,则无需重新装入时间常数,一但发生溢出,会由后备寄存器自动装入时间常数,从而免去了指令的干预。
4,方式3。
只有T0才能工作于方式3,此时的TH0和TL0被分开使用,形成两个独立的8位计数器。
TR1用做脉冲信号的通断控制,TF1作为溢出标志,此时的TH0只能用做定时处理。
对于TL0,由于受C/T的控制,既可以定时器也可以作为计数器。
同时,TR0用做脉冲信号的通断控制,TF0作为溢出标志。
当T0工作在方式3时,T1可以工作在方式0,方式1或方式2下,但此时的TR1和TF1已被占用,所以不再有控制脉冲信号的功能。
《单片机应用技术》000-9(周君芝)课件 项目三 中断系统与定时计数器的应用
3.1.3 中断系统的结构
IE0: 外部中断 INT0 的请求标志位。当CPU检测到外部中断请求时,该标志位置“1”;当
CPU转向中断服务程序时,由硬件自动置“0”(只适用于边沿触发方式)。 IT1和IE1:
外部中断 INT1 的触发方式控制位和请求标志位,其含义与IT0和IE0相同。
3.1.3 中断系统的结构
在电平触发方式中,当CPU转向中断服务程序时,不能自 动清除IE标志位,也不能由软件进行清除。因此应在中断返回 前撤销引脚上的低电平,否则就会产生CPU多次响应一次中断 的错误。
3.1.2 中断的特点
中断的特点主要 有分时操作、实 时处理、故障处
理等。
分时操作 实时处理
故障处理
只有当服务对象向CPU发出中断请求时,CPU才去 为它服务,无中断请求时CPU正常工作,这样单片机可 以为多个对象服务,从而大大地提高了CPU的工作效率。
利用中断技术,各个服务对象可以根据需要随时 向CPU发出中断请求,CPU可及时发现和处理中断请 求并为之服务,以满足实时控制的要求。
位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H
功能
用于定时/计数器
用于中断
TCON的位名称、位地址及功能
IT0: 外部中断 INT0 的触发方式控制位,由软件进行置“1”和置“0”。当IT0=1时,为
边沿触发方式(即当引脚P3.2出现下降沿脉冲信号时,中断请求有效);当IT0=0时, 为电平触发方式(即当引脚P3.2为低电平信号时,中断请求有效)。
1.中断源
向CPU发出中断请求的信号称为中断源。51系列单片机中有5个中断源,其中2个外部中 断源,3个内部中断源,具体如下。
INT0 外部中断,由引脚
c51单片机的定时器和中断
二、方式1 方式
方式1结构 图6-5 T0 (或T1) 方式 结构 或
三、方式2 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TL1 重装初值控制 TH1 8位 &
≥1
0 1
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式2结构 图6-6 T0 (或T1) 方式 结构 或
图6-3 方波硬件设计和仿真波形
(2)源程序 ) //中断方式 中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式 工作在方式1 工作在方式 TL0=0xB0; //给TL0置初值 给 置初值 TH0=0x3c; //给TH0置初值 给 置初值 ET0=1; //开串行口中断 开串行口中断 EA=1; TF0=0; TR0=1; //启动 启动T0 启动 while(1) ; //设置断点处 设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 重赋初值 P1_1=!P1_1; //定时时间到 定时时间到P1_1取反 定时时间到 取反 printf("Timer1 overflow in Mode 1\n");/* 定时 溢出后, 器0溢出后,输出提示信息 */ 溢出后 }
计数器控制寄存器TCON 三、定时/计数器控制寄存器 定时 计数器控制寄存器
定时器控制字TCON的格式如下。 位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
中断技术DMA控制器及定时器计数器
定
一个时钟周期,然后又自动变为高电平并一直维持高
时
电平。一般将此负脉冲作为选通信号。当计数值N被送 到计数初值寄存器后,在下一个时钟周期,计数初值
器
被送到计数执部件,之后,计数执行部件作减1计数,
第八章
中断技术、DMA控制器及定时器/计数器
中断的基本原理
主 要
中断的实现方法
内
中断控制器8259A
容
DMA控制器8237
计数器/定时器8253
中
断
所谓中断,就是指当CPU正在执行
的 基
程序时,外设(或其它中断源)向CPU 发出请求,CPU暂停当前程序的执行, 转向该外设服务(或称中断服务)程
本 序,当中断服务程序运行结束后,
统
INTR的中断请求。如果IF为0,即使INTR端有
中断请求信号CPU也不会响应。这种情况称为
中断屏蔽。
中断向量表
8086/8088系统支持最多256个中断,对
8086 8088
应每一个中断,都有一个中断服务程序,
中
该中断服务程序的入口地址称为中断向 量。每个中断向量占用4个字节,前两个
断 字节为服务程序的IP(偏移量),后两
❖设置方式寄存器
PC机BIOS在初始化时,将方式寄存器初始化为单字 节传送方式、地址递增、通道0为读传送、自动预置 (方式字为58H)、通道1、2、3为校验传送、禁止 自动预置,其方式字为41H、42H、43H。
❖设置命令寄存器
初始化必须设置命令寄存器,以确定其工作时序、 优先级方式、DREQ和DACK的有效电平及是否允许工 作等。
时
(不是减到0)时,输出OUT变为低电平。
器
计
定时器计数器中断综合实验
报告成绩:教师签字:批改日期:评语:学生实验报告课程名称单片机原理及接口技术姓名实验名称定时器/计数器、中断综合实验班级实验目的掌握51系列单片机中断系统及定时器的工作原理及使用技巧学号实验日期实验内容(1)P1 口做输出口,接八只发光二极管,高电平点亮,控制一个. 方向循环点亮8只LED,每个LED点亮时间为50ms;(2)在以上基础上加外部中断内容,由外部中断请求时,8只LED全亮(3)P1 口做输出口,接八只发光二极管,高电平点亮,控制一个方向循环点亮8只LED,每个LED点亮时间改为2s实验地点实验组号实验设备计算机 wave6000程序 lab2000p试验箱同组人1.实验电路及连线本次试验不做要求2.程序流程图本次实验无3.源程序(1 ORG 0000H MOV TL0,#58HLJMP MAIN SETB EAORG 0003H SETB ET0ORG 000BH SETB TR0LJMP SER0 SJMP $ORG 1000H SER0:MOV TH0,#9EHMAIN: MOV A,#01H MOV TL0,#58HLOOP: MOV P1,A RL AMOV TMOD,#01H MOV P1,AMOV TH0,#9EH RETIEND(2ORG 0000H SER0:MOV TH0,#9EHLJMP MAIN MOV TL0,#58HORG 0003H RL ALJMP SER1 MOV P1,AORG 000BH RETILJMP SER0 SER1:PUSH ACCORG 1000H PUSH PSWMAIN: MOV A,#01H MOV A,#0FFH LOOP: MOV P1,A MOV P1,AMOV TMOD,#01H LCALL DELAY MOV TH0,#9EH POP PSWMOV TL0,#58H POP ACCSETB EA RETISETB ET0 DELAY:MOV R7,#0FFH SETB TR0 L1:MOV R6,#0FAH SETB EX0 DJNZ R6,$SETB IT0 DJNZ R7,L1SJMP $ RETEND(3 ORG 0000H SETB EALJMP MAIN SETB ET0ORG 000BH SETB TR0LJMP SER0 SJMP $ORG 1000H SER0:MOV TH0,#9EH MAIN: MOV A,#01H MOV TL0,#58H LOOP: MOV P1,A DJNZ R0,EXIT MOV R0,#28H MOV R0,#28HMOV TMOD,#01H RL AMOV TH0,#9EH MOV P1,AMOV TL0,#58H EXIT:RETIEND4.结果记录及分析(1)结果: P1 口做输出口,接八只发光二极管,高电平点亮,控制一个方向循环点亮8只LED,每个LED点亮时间为50ms;分析:用定时器方式0,使用定时功能,定时器以中断方式工作。
定时计数器和中断系统的综合应用实验报告收获与体会
定时计数器和中断系统的综合应用实验报告收获与体会这是一个比较开放性的问题,我尝试给出一个比较全面的回答,希望能够帮到你。
一、实验目的通过对定时计数器和中断系统的综合应用实验,掌握以下技能: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口。
中断定时计数器课件
例 5 编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲 进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位 存R1,低位存R0)。 解答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。编写程 序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: JNB P1.0,MAIN MOV TMOD,#05H ;定 时器/计数器T0为计数方式1 SETB TR0 ;启动T0,开 始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 WAIT: JB CLR CLR MOV MOV AJMP INC RETI P1.2,WAIT EA TR0 R1,TH0 R0,TL0 $ R2
ORG 000BH CPL P1.0 MOV TL0, #9CH RETI ORG 001BH CPL P1.1 MOV TH0, #38H RETI ;TL0 中断服务程序 ;P1.0 取反 ;重新装入计数初值 ;中断返回 ;TH0 中断服务程序 ;P1.1取反 ;重新装入计数初值 ;中断返回
AJMP DEL REP:CPL P1.0 AJMP DEL ; ;若计数溢出,则输出取反
TINT0: JNB 20H.0,NEXT MOV TL0,#0B5H MOV TH0,#0FFH CLR P1.1 CPL 20H.0 SJMP LAST NEXT: MOV TL0,#0CEH MOV TH0,#0FFH SETB P1.1 CPL 20H.0 LAST:RETI
方法二: 采用方式2 定时器中断 加延时程序
ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#02H;定时器/ 计数器T0为定时方式2 IT0P:CLR EA MOV TL0,#4AH;定时 CLR P1.0 ;关中断 364μs初值赋值 MOV R0,#9 ;延时26μs SETB TR0;启动T0,开始 DLY:DJNZ R0,DLY MOV TL0,#4AH ;定时364μs 计数 初值赋值 SETB ET0;允许T0中断 SETB P1.0 SETB EA;CPU开中断 SETB EA RETI SETB P1.0 WAIT: AJMP WAIT
中断技术、DMA控制器及定时器计数器
编 称为DMA控制器(DMAC)。需要数据
程 传送时,DMAC向CPU提出申请,CPU DMA 让出总线控制权,由DMAC直接控制
控 地址总线、数据总线和控制总线,
制 让存储器与高速的外部设备直接交
器
换数据,CPU不再干预,这样大大减 少了中间过程,提高了数据传送速
8237A
度。
8237A的结构和功能 可 ❖引脚信号 编 程
理
中断过程
中
包括:中断请求,中断判优,中断响 应,中断处理,中断返回五个过程。
断
的
中断优先权
基
❖软件查询法
本
是在CPU响应中断后,用软件查询以确定是 哪些外设申请中断,并判断它们的优先权
原
理
❖硬件优先权排队电路
▪ 中断优先权排队电路
中
可用硬件编码器和比较器组成的优先权
断
排队电路
的
基
本
原
理
❖硬件优先权排队电路
DMA
控 制 器
8237A
❖内部结构
可
8237A有4个独立的DMA通道,24个内部寄存器。
编
程
DMA
控
制
器
8237A
可 编 程
DMA
控 制 器
8237A
▪ 内部寄存器
基址寄存器和当前地址寄存器 基字节计数寄存器和当前字节计数寄存器 暂时地址寄存器 状态寄存器 命令寄存器 暂存寄存器 方式寄存器 屏蔽寄存器 请求寄存器
定
为低电平作为初始电平,并且在计数值到达0 之前一直保持低电平。当计数到达0时,输出
时
端OUT为高电平,并且一直保持高电平,除非
器
写入新的计数值。
单片机实验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单⽚机定时器、串⼝、中断⽂章⽬录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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设置存储区后, 左图标) 设置存储区后,可运行程序 (左图标)或停 止程序(右图标);如果希望单步执行( );如果希望单步执行 止程序(右图标);如果希望单步执行(即一条一条 的执行指令,以便调试程序) 图标, 的执行指令,以便调试程序)可点击 图标,ห้องสมุดไป่ตู้点击 一次黄箭头会向下移动,指向下一条指令。 一次黄箭头会向下移动,指向下一条指令。 观察程序的运行结果: 在单步调试时,每执行一条 观察程序的运行结果: 在单步调试时, 指令, 指令,都可在屏幕左上方的寄存器区和右下方的存储 区观察运行的状态。 区观察运行的状态。程序存储器中表示的是程序汇编 后的二进制代码, 后的二进制代码,内外数据存储器中表示的运行中数 据结果的变化。 据结果的变化。观察时可在相应存储区的地址栏打入 地址即可,如想看内存20H中的内容,只需在相应存储 中的内容, 地址即可,如想看内存 中的内容 区的地址栏打入 D:0020H。 。
出现右图后按箭头 所指进行设置, 所指进行设置,注 意你使用的是那个 串口(Com1 (Com1还是其它 串口(Com1还是其它 的,可以看设备 管理器); 管理器);
10)全部确定后,对程序进行编译和链接, (10)全部确定后,对程序进行编译和链接,并生成 相应的HEX文件后,可进行调试(红色的D), HEX文件后 相应的HEX文件后,可进行调试(红色的D), 如出现错误报告, 如出现错误报告,如要求连上仿真 仪时,请检查有无连接USB USB线和串 仪时,请检查有无连接USB线和串 口线,并按下仿真仪上的复位键; 口线,并按下仿真仪上的复位键; 11)进入调试窗口,连接上相关的连接线,运行程序, (11)进入调试窗口,连接上相关的连接线,运行程序, 即可观查仿真结果; 即可观查仿真结果; 12)退出仿真时, (12)退出仿真时,按下仿真仪上的复位键就会自动 退到编辑模式下,修改完毕程序并编译后,再按下”调试” 退到编辑模式下,修改完毕程序并编译后,再按下”调试” 即可进入仿真模式; 即可进入仿真模式;
//位选码取反后送位控制口P2口 //位选码左移一位,选中下一位LED //显示字型码送P1口 //延时50ms
kerl-uvision集成调试软件的操作 kerl-uvision集成调试软件的操作
操作步骤:( )双击桌面上的UV2 UV2快捷图 操作步骤:(1)双击桌面上的UV2快捷图 :( 动软件。 动软件。 ,启
定时计数器定时50ms 50ms, 3、定时计数器定时50ms,六位数码管动态显示 012345” “012345 硬件连接:数码管数据 p0,数码管控制p2 硬件连接: p0,数码管控制p2 数码管控制
#include <reg51.h> void delay50ms() { TH1=0x3c; // 置定时器初值,设为50ms定时 TL1=0xb0; TR1=1; // 启动定时器1 while(!TF1); // 查询计数是否溢出,即定时到, TF1=1 TF1=0; // 50ms定时到,定时器溢出标志位TF1清零 } void main() //主函数
void main (void) { unsigned char x; EX0=1; IT0=1; EA=1; while(1) { for (x=0;x<8;x++) { P1=tab[x]; delay();} } }
// 设置外部中断0中断允许 // 跳沿触发方式 // 允许中断 // 正常情况流水灯,当按下按键转中断
如图, 屏线连接P1口和8 P1口和 2、中断的应用 如图,用8屏线连接P1口和8个 LED灯 正常运行时, 个灯流水,按下K1 K1时 LED灯;正常运行时,8个灯流水,按下K1时,申请 中断, 个灯闪烁5 中断,使8个灯闪烁5次。
参考程序 #include "reg51.h" #define unit unsigned char sbit DIPswitch1 =P3^2; //定义按键接P3.2 const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //流水 void delay() { unsigned int i; for(i=0;i<35530;i++); //延时 } void int1() interrupt 0 //外部中断0 使灯闪烁5次 { unsigned i; for(i=0;i<=5;i++) { P1=0x00; delay(); P1=0xFF; delay();} }
13)依次点击屏幕上方左下角的编译和建造目标图 (13)依次点击屏幕上方左下角的编译和建造目标图 对文件进行编译和链接, 标 对文件进行编译和链接,观察左下角的调 试程序信息显示, 试程序信息显示,如有错可根据该栏提示的信息进行 修改,修改后要重新保存和编译,直到无错误提示, 修改,修改后要重新保存和编译,直到无错误提示,如 下图所示。 下图所示。
点击(图标)目标1前的“ 号 出现(图标) (5)点击(图标)目标1前的“+”号,出现(图标) 源程序组1 选中并点右键, 源程序组1,选中并点右键,选“文件增加到源程序组 文件增加到源程序组 1”,选择文件类型,再选要输入的程序名.C或ASM,点 ,选择文件类型,再选要输入的程序名. ASM, ADD(加入),点确定。 此时点击源程序组1 ),点确定 ADD(加入),点确定。 此时点击源程序组1可以看到 要输入的程序。 要输入的程序。
(8)选择”输出”菜单中的”生成HEX文件”, 选择”输出”菜单中的”生成HEX文件”, HEX文件 以便汇编后产生HEX代码,供编程器使用; HEX代码 以便汇编后产生HEX代码,供编程器使用;
调试”菜单中, (9)在”调试”菜单中,选择如下 箭头所指3项功能, 点击设置”, 箭头所指3项功能,并”点击设置 , 点击设置
微机原理与接口技术(单片机) 微机原理与接口技术(单片机)实验
实验四 定时计数器和中断 实验目的: 一、实验目的: 通过实验学会定时计数器和中断的应用。 1、通过实验学会定时计数器和中断的应用。 熟悉XLISP XLISP系列 2、熟悉XLISP系列 单片机综合仿真试验仪的组成 和使用方法。 和使用方法。 学会应用XLISP仿真试验和keil uvision2集成 XLISP仿真试验和keil3、学会应用XLISP仿真试验和keil-uvision2集成 调试软件进行仿真实验。 调试软件进行仿真实验。掌握仿真实验的步骤并能得到 正确的实验结果。 正确的实验结果。
{
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92}; //设置数字0~5字型码
unsigned char i,w; TMOD=0x10; //设置定时器1工作方式1
while(1) { w=0x01; for(i=0;i<6;i++) { P2=~w; w<<=1; P1=led[i]; delay50ms(); } } } //位选码初值为01H
点击P (2)点击P工程 N新建工程 A1)并点击保存。 A1)并点击保存。
输入文件名( 输入文件名(如
(3)出现CPU屏幕,选Atmel 出现CPU屏幕, CPU屏幕 幕左上方出现图标目标1 幕左上方出现图标目标1。
点确定。 AT89C51 点确定。屏
(4)点击文件 新建文件
出现汇编语言输入区。 出现汇编语言输入区。
程序编写后, (6)程序编写后, 可进行系统的仿真; 可进行系统的仿真; 在仿真前, 在仿真前,需对目标 的属性进行修改; 1的属性进行修改; 如右图,点击P 如右图,点击P工程 下拉菜单中的” 下拉菜单中的”目 目标1’属性”; 1’属性 标’目标1’属性”;
单击”目标”,输入仿真器的频率12(MHz); ”,输入仿真器的频率 (7)单击”目标”,输入仿真器的频率12(MHz);
二、实验步骤和内容 XL1000或XL2000综合仿真仪进行在线仿真步 1、用XL1000或XL2000综合仿真仪进行在线仿真步 骤如下: 骤如下: 使用USB线和串口线, XL1000综合仿真仪与 USB线和串口线 (1)使用USB线和串口线,将XL1000综合仿真仪与 微型计算机串行口COM1连接起来; COM1连接起来 微型计算机串行口COM1连接起来; XL1000综合仿真仪上 综合仿真仪上, JP13和JP14两个 (2)在XL1000综合仿真仪上,将JP13和JP14两个 232/USB通信选择方式端口的跳线帽跳至232的方式 通信选择方式端口的跳线帽跳至232的方式, 232/USB通信选择方式端口的跳线帽跳至232的方式, JP17的开关压下 选择仿真模式; 的开关压下, (3)将JP17的开关压下,选择仿真模式;
16) 语言程序,调试时需打开以下窗口: (16)对C语言程序,调试时需打开以下窗口: 变量的查询: 1)变量的查询: 打开V视图: 监视&调用堆栈窗, 打开V视图:W监视&调用堆栈窗,在局部栏中或监 #1、 中观察结果。 视#1、2中观察结果。 scanf输入 或用printf输出时: 输入, printf输出时 2)用scanf输入,或用printf输出时: 打开V视图:串行口1#观察结果。 1#观察结果 打开V视图:串行口1#观察结果。 当单步运行时,在scanf语句运行后,在串行口1# 当单步运行时, scanf语句运行后,在串行口1# 语句运行后 中光标位置按输入格式要求输入数据后回车 回车。 中光标位置按输入格式要求输入数据后回车。
输入C语言或汇编语言程序, 输入C语言或汇编语言程序, 输入结束后点击文 件中的保存,输入程序名(例如S1.C或S1.ASM)并选择 件中的保存,输入程序名(例如S1.C或S1.ASM)并选择 S1.C 存入的盘( D:)点击保存 点击保存。 存入的盘(如D:)点击保存。 输入的程序名一般不超过6个字母数字,以字母打头, 输入的程序名一般不超过6个字母数字,以字母打头, .C,汇编语言要加尾缀 .ASM。 汇编语言要加尾缀: C语言要加尾缀 .C,汇编语言要加尾缀:.ASM。