方便查找中断和定时器的80C51头文件
第6章80C51单片机的CTC与中断系统素材

3、工作方式2
当M1M0两位为10时,定时器/计数 器选为工作方式2,为8位时间常数可 自动再装入的计数器,结构如下图所示。
(二)定时器/计数器T0、T1的工作方式
3、工作方式2
(二)定时器/计数器T0、T1的工作方式
3、工作方式2 这时TLX为8位计数器,THX为时间常数 初值寄存器。 当TLX计满溢出时,置位TFX,并将THX 的内容(即时间常数初值)重新装入TLX中。
0
(二)定时器/计数器T0、T1的工作方式
4、工作方式3
(二)定时器/计数器T0、T1的工作方式
4、工作方式3
TL0占用了原T0的所有资源; TH0占用了原T1的部分资源TR1和TF1,且TH0只 能作为定时器用。 这种情况下,T1仍可工作于方式0、1或2的定时 或计数,但TR1、TF1被TH0占用。 该方式一般用在T1作为串口的波特率发生器, 或不需要中断的场合。
(三)定时器/计数器T2 概述 T2的计数脉冲源有两个:内部机器周期和
外部计数脉冲(从T2即P1.0端输入)
此时P1.1 作为外部控制信号输入端T2EX。
(三)定时器/计数器T2
1、T2中的特殊功能寄存器
(1)T2控制寄存器T2CON(字节地址 C8H): TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
EXEN2
TR2
C/T2
CP/RL2 1,选择T2 0,选择T1
串行口发送波特率发生器选择
串行口接收波特率发生器选择
1,选择T2 0,选择T1 ,造成捕捉/重装载,
T2外部标志 (EXEN2=1)
1,T2EX引脚(P1.1 )上出现 该位置1,申请中断。
0,CPU响应中断,应由软件清除该标志。 T2溢出标志,T2溢出时置位(在波特率发生器方式下不置位) 并申请中断,只能靠软件清除。
80c51单片机定时器计数器工作原理

80c51单片机定时器计数器工作原理80C51单片机是一种常用的微控制器,其定时器/计数器(Timer/Counter)是实现定时和计数功能的重要组件。
以下简要介绍80C51单片机定时器/计数器的工作原理:1. 结构:定时器/计数器由一个16位的加法器构成,可以自动加0xFFFF(即65535)。
定时器/计数器的输入时钟可以来自系统时钟或外部时钟源。
2. 工作模式:定时模式:当定时器/计数器的输入时钟源驱动加法器不断计数时,可以在达到一定时间后产生中断或产生其他操作。
计数模式:当外部事件(如电平变化)发生时,定时器/计数器的输入引脚可以接收信号,使加法器产生一个增量,从而计数外部事件发生的次数。
3. 定时常数:在定时模式下,定时常数(即定时时间)由预分频器和定时器/计数器的初值共同决定。
例如,如果预分频器设置为1,定时器/计数器的初值为X,那么实际的定时时间 = (65535 - X) 预分频系数输入时钟周期。
在计数模式下,定时常数由外部事件发生的时间间隔决定。
4. 溢出和中断:当加法器达到65535(即0xFFFF)时,会产生溢出,并触发中断或其他操作。
中断处理程序可以用于执行特定的任务或重置定时器/计数器的值。
5. 控制寄存器:定时器/计数器的操作可以通过设置相关的控制寄存器来控制,如启动/停止定时器、设置预分频系数等。
6. 应用:定时器/计数器在许多应用中都很有用,如时间延迟、频率测量、事件计数等。
为了充分利用80C51单片机的定时器/计数器功能,通常需要根据实际应用需求配置和控制相应的寄存器,并编写适当的软件来处理定时器和计数器的操作。
第5章 80C51 单片机的中断与定时

第9章 单片机串行扩展 章
第4章 80C51单片机汇编语言程序设计 章 单片机汇编语言程序设计
第10章 单片机 章 单片机A/D及D/A转换接口 及 转换接口
第5章 80C51单片机的中断与定时 章 单片机的中断与定时
第11章 8位单片机的发展 章 位单片机的发展
第6章 单片机并行存储器扩展 章
第12章 单片机应用 章
主流程图(略),程序如下:
ORG LJMP ORG LJMP ORG MOV SETB SETB SETB MOV MOV MOV RL LCALL AJMP 0000H START 0003H 0100H 0030H SP, #60H IT0 EX0 EA IP, #01H A, #01H P1, A A DELAY LOOP ;中断入口
③串行中断1个:串行接收或发送完一帧数据时就产 生一个内部中断请求RI或TI. 入口地址:0023H. 2, 中断处理过程 包含:中断请求,中断响应,中断服务,中断返 回四个阶段. ①中断请求:中断源将相应请求中断的标志位置 "1",表示发出请求,并由CPU 查询. ②中断响应:在一条指令的最后一个周期按优先级 顺序查询中断标志,为"1"并满足响应 条件时响应.
一,定时/计数器构成 定时 计数器构成 1,定时方法 软件延时 通过执行循环而获得延时,短时间延时; 硬件延时 由硬件电路实现延时,长时间延时; 可编程定时 通过对系统时钟脉冲的计数而获得延时. 2,MCS-51单片机的定时/计数器 16位定时/计数器T0,T1,分别由4个8位计数 器组成,均属SFR寄存器. T0由TH0,TL0构成,字节地址为8CH,8AH; T1由TH1,TL1构成,字节地址为8DH,8BH;
80c51单片机对中断源的中断优先级的处理原则

80c51单片机对中断源的中断优先级的处理原则
80C51单片机使用了5级中断优先级,具体的中断优先级处理
原则如下:
1. 不可屏蔽中断 (External Interrupt) 优先级最高,不能被其他
中断打断,且不可被软件修改。
2. 时钟中断 (Timer Interrupt) 优先级次高,用于定时器中断。
当出现同时中断请求时,时钟中断优先级高于串口中断。
3. 串行中断(Serial Interrupt) 优先级较低,用于串口通信中断。
当出现同时中断请求时,如果没有发生时钟中断,则串行中断可以打断其他低优先级中断。
4. 外部中断0 (External Interrupt 0) 优先级较低,用于外部中断
0的中断请求。
当出现同时中断请求时,如果没有发生时钟中
断或串行中断,则外部中断0可以打断其他低优先级中断。
5. 外部中断1 (External Interrupt 1) 优先级最低,用于外部中断
1的中断请求。
当出现同时中断请求时,如果没有发生时钟中断、串行中断或外部中断0,则外部中断1可以打断其他低优
先级中断。
总结起来,中断优先级的处理原则是按照中断的重要性和紧急程度进行排序,优先级高的中断可以打断优先级低的中断。
在80C51单片机中,不可屏蔽中断的优先级最高,其次是时钟中断,然后是串行中断,外部中断0和外部中断1的优先级最低。
80C51中断汇总

80C51有5个中断源,2个优先级。
80C52有6个中断源。
要用中断按下步骤设置:1、开CPU总中断:EA=1;2、开要用的中断源:如片内定时器T0,ET0=1;3、第一步:中断允许控制CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
EX0(IE.0),外部中断0允许位;ET0(IE.1),定时/计数器T0中断允许位;EX1(IE.2),外部中断1允许位;ET1(IE.3),定时/计数器T1中断允许位;ES(IE.4),串行口中断允许位;EA (IE.7),CPU中断允许(总允许)位。
第二步:控制寄存器TCONTCON的低4位用于控制外部中断, TCON的高4位用于控制定时/计数器的启动和中断申请。
其格式如下:TF1(TCON.7):T1溢出中断请求标志位。
T1计数溢出时由硬件自动置TF1为1。
CPU响应中断后TF1由硬件自动清0。
T1工作时,CPU可随时查询TF1的状态。
所以,TF1可用作查询测试的标志。
TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
TR1(TCON.6):T1运行控制位。
TR1置1时,T1开始工作;TR1置0时,T1停止工作。
TR1由软件置1或清0。
所以,用软件可控制定时/计数器的启动与停止。
TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
TR0(TCON.4):T0运行控制位,其功能与TR1类同。
1、P3.2脚(INT0-外部中断0):由IT0(TCON.0)选择其为低电平有效还是下降沿有效。
当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU 申请中断。
(1)IT0(TCON.0),外部中断0触发方式控制位。
当IT0=0时,为电平触发方式。
当IT0=1时,为边沿触发方式(下降沿有效)。
(2)IE0(TCON.1),外部中断0中断请求标志位。
2、P3.3脚(INT1-外部中断1):由IT1(TCON.2)选择其为低电平有效还是下降沿有效。
80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表SFR MSB 位地址/位定义LSB 字节地址B F7 F6 F5 F4 F3 F2 F1 F0 F0HACC E7 E6 E5 E4 E3 E2 E1 E0 E0HPSW D7 D6 D5 D4 D3 D2 D1 D0 D0H CY AC F0 RS1 RS0 OV F1 PIP BF BE BD BC BB BA B9 B8 B8H ———PS PT1 PX1 PT0 PX0P3 B7 B6 B5 B4 B3 B2 B1 B0 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0IE AF AE AD AC AB AA A9 A8 A8H EA ——ES ET1 EX1 ET0 EX0P2A7 A6 A5 A4 A3 A2 A1 A0 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0SBUF (99H)SCON9F 9E 9D 9C 9B 9A 99 98 98H SM0 SM1 SM2 REN TB8 RB8 TI RIP197 96 95 94 93 92 91 90 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0TH1 (8DH) TH0 (8CH) TX1 (8BH) TX0 (8AH)TMOD GATE C/T M1 M0 GATEC/T M1 M0 (89H)TCON8F 8E 8D 8C 8B 8A 89 88 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0PCON SMOD ———GF1 GF0 PD IDL (87H)DPH (83H)DPL (82H)SP (81H)P0 87 86 85 84 83 82 81 80 80HP0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0/*--------- 8051内核特殊功能寄存器-------------*/sfr ACC = 0xE0; //累加器sfr B = 0xF0; //B 寄存器sfr PSW = 0xD0; //程序状态字寄存器sbit CY = PSW^7; //进位标志位sbit AC = PSW^6; //辅助进位标志位sbit F0 = PSW^5; //用户标志位0sbit RS1 = PSW^4; //工作寄存器组选择控制位sbit RS0 = PSW^3; //工作寄存器组选择控制位sbit OV = PSW^2; //溢出标志位sbit F1 = PSW^1; //用户标志位1sbit P = PSW^0; //奇偶标志位sfr SP = 0x81; //堆栈指针寄存器sfr DPL = 0x82; //数据指针0低字节sfr DPH = 0x83; //数据指针0高字节/*------------ 系统管理特殊功能寄存器-------------*/sfr PCON = 0x87; //电源控制寄存器sfr AUXR = 0x8E; //辅助寄存器sfr AUXR1 = 0xA2; //辅助寄存器1sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器sfr CLK_DIV = 0x97; //时钟分频控制寄存器sfr BUS_SPEED = 0xA1; //总线速度控制寄存器/*----------- 中断控制特殊功能寄存器--------------*/sfr IE = 0xA8; //中断允许寄存器sbit EA = IE^7; //总中断允许位sbit ELVD = IE^6; //低电压检测中断控制位sbit EADC = IE^5; //ADC中断允许控制位sbit ES = IE^4; //串口1中断允许位sbit ET1 = IE^3; //定时器1溢出中断允许位sbit EX1 = IE^2; //外部中断1允许位sbit ET0 = IE^1; //定时器0溢出中断允许位sbit EX0 = IE^0; //外部中断0允许位sfr IE2 = 0xAF; //中断允许寄存器2sfr IP = 0xB8; //中断优先级寄存器sbit PPCA = IP^7; // PCA中断优先级控制位sbit PLVD = IP^6; //低电压检测中断优先级控制位sbit PADC = IP^5; //ADC中断优先级控制位sbit PS = IP^4; //串口1中断优先级控制位sbit PT1 = IP^3; //定时器1中断优先级控制位sbit PX1 = IP^2; //外部中断1优先级控制位sbit PT0 = IP^1; //定时器0中断优先级控制位sbit PX0 = IP^0; //外部中断0优先级控制位sfr IPH = 0xB7; //中断优先级高位寄存器sfr IP2 = 0xB5; //第二中断优先级寄存器低字节sfr IPH2 = 0xB6; //第二中断优先级寄存器高字节/*--------------- I/O 口特殊功能寄存器-------------------*/sfr P0 = 0x80; //P0口寄存器sfr P0M1 = 0x93; //P0口工作模式寄存器1sfr P0M0 = 0x94; //P0口工作模式寄存器0sfr P1 = 0x90; //P1口寄存器sfr P1M1 = 0x91; //P1口工作模式寄存器1sfr P1M0 = 0x92; //P1口工作模式寄存器0sfr P1ASF = 0x9D; //P1口模拟量功能设置寄存器sfr P2 = 0xA0; //P2口寄存器sfr P2M1 = 0x95; //P2口工作模式寄存器1sfr P2M0 = 0x96; //P2口工作模式寄存器0sfr P3 = 0xB0; //P3口寄存器sbit T1 = P3^5; //定时器1外部输入sbit T0 = P3^4; //定时器0外部输入sbit INT1 = P3^3; //外部中断1sbit INT0 = P3^2; //外部中断0sbit TXD = P3^1; //串行输入通道sbit RXD = P3^0; //串行输出通道sfr P3M1 = 0xB1; //P3口工作模式寄存器1sfr P3M0 = 0xB2; //P3口工作模式寄存器0sfr P4 = 0xC0; //P4口寄存器sfr P4M1 = 0xB3; //P4口工作模式寄存器1sfr P4M0 = 0xB4; //P4口工作模式寄存器0sfr P4SW = 0xBB; //P4口功能切换寄存器sfr P5 = 0xC8; //P5口(只有P5.3 P5.2 P5.1 P5.0)sfr P5M1 = 0xC9; //P5口工作模式寄存器1sfr P5M0 = 0xCA; //P5口工作模式寄存器0./*----------------- 定时器特殊功能寄存器-----------------*/sfr TCON = 0x88; //定时/计数控制寄存器sbit TF1 = TCON^7; //定时器1溢出中断标志sbit TR1 = TCON^6; //定时器1运行控制位sbit TF0 = TCON^5; //定时器0溢出中断标志sbit TR0 = TCON^4; //定时器0运行控制位sbit IE1 = TCON^3; //外部中断1请求标志sbit IT1 = TCON^2; //选择外部中断请求1为边沿触发方式的控制位sbit IE0 = TCON^1; //外部中断0请求标志sbit IT0 = TCON^0; //选择外部中断请求0为边沿触发方式的控制位sfr TMOD = 0x89; //定时/计数模式控制寄存器sfr TL0 = 0x8A; //定时/计数器0低字节sfr TH0 = 0x8C; //定时/计数器0高字节sfr TL1 = 0x8B; //定时/计数器1低字节sfr TH1 = 0x8D; //定时/计数器1高字节/*-------------- 串行口特殊功能寄存器------------------*/sfr SCON = 0x98; //串行口控制寄存器sbit SM0 = SCON^7; //串行口工作方式设定控制位0(与FE功能复用)sbit FE = SCON^7;sbit SM1 = SCON^6; //串行口工作方式设定控制位1sbit SM2 = SCON^5; //UART的SM2设定sbit REN = SCON^4; //接收允许位sbit TB8 = SCON^3; //发送数据的第九位sbit RB8 = SCON^2; //接收数据的第九位sbit TI = SCON^1; //发送中断标志sbit RI = SCON^0; //接收中断标志sfr SBUF = 0x99; //串口数据缓冲器sfr SADEN = 0xB9; //从机地址掩码寄存器sfr SADDR = 0xA9; //从机地址寄存器sfr S2CON = 0x9A; //串行口2控制寄存器sfr S2BUF = 0x9B; //串行口2数据缓冲器sfr BRT = 0x9C; //独立波特率定时器/*---------------- 看门狗定时器寄存器------------------*/sfr WDT_CONTR = 0xC1; //看门狗定时器控制寄存器/*---------------- PCA 寄存器-----------------*/sfr CCON = 0xD8; //PCA控制寄存器sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFFH变为0000H)标志sbit CR = CCON^6; //PCA计数器计数允许控制位sbit CCF1 = CCON^1; //PCA模块1中断标志sbit CCF0 = CCON^0; //PCA模块0中断标志sfr CMOD = 0xD9; //PCA工作模式寄存器sfr CL = 0xE9; //PCA计数器低8位sfr CH = 0xF9; //PCA计数器高8位sfr CCAPM0 = 0xDA; //PAC模块0的工作模式寄存器sfr CCAPM1 = 0xDB; //PAC模块1的工作模式寄存器sfr CCAP0L = 0xEA; //PAC模块0捕捉/比较寄存器低8位sfr CCAP0H = 0xFA; //PAC模块0捕捉/比较寄存器高8位sfr CCAP1L = 0xEB; //PAC模块1捕捉/比较寄存器低8位sfr CCAP1H = 0xFB; //PAC模块1捕捉/比较寄存器高8位sfr PCA_PWM0 = 0xF2; //PCA模块0 PWM寄存器sfr PCA_PWM1 = 0xF3; //PCA模块1 PWM寄存器/*----------------- ADC 寄存器-----------------*/sfr ADC_CONTR = 0xBC; //ADC控制寄存器, 本寄存器不支持位操作sfr ADC_RES = 0xBD; //ADC转换结果高8位寄存器sfr ADC_RESL = 0xBE; //ADC转换结果低2位寄存器/*---------------- SPI 寄存器--------------------*/sfr SPSTA T = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器------------------*/sfr IAP_DA TA = 0xC2; //ISP/IAP Flash数据寄存器sfr IAP_ADDRH = 0xC3; //ISP/IAP Flash地址高字节sfr IAP_ADDRL = 0xC4; //ISP/IAP Flash地址低字节sfr IAP_CMD = 0xC5; //ISP/IAP Flash命令寄存器sfr IAP_TRIG = 0xC6; //ISP/IAP Flash命令触发器sfr IAP_CONTR = 0xC7; //ISP/IAP控制寄存器Love is not a maybe thing. You know when you love someone.。
第5章80C51的中断系统及定时计数器

(B8H)
管理原则
★ 高优先级中断源可中断正在执行的低优先级中断
★ 同级或低优先级中断不能中断正在执行的中断
中断嵌套
主 程 序 转移 转移 高 级 中 断 程 序
断点
继 续 返回 返回
外部中断触发方式
TCON
(88H) D7 D6 D5 D4 D3 D2 D1 D0
TF1
TR1
TF0
TR0
IE1
IT1
INT1
IE0
IT0
INT0
ITX---Interrupt Trigger,外部中断触发方式控制位 外部中断有两种触发方式,通过设置IT0、IT1实现。 设置IT0=0时——电平触发方式,低电平有效。 设置IT0=1时——为边沿触发方式,下降沿有效。 ★ IT0=1时,下降沿触发,CPU响应中断,硬件自动清IE0=0
● 用4位放定时器T0、T1,外部中断INT0、INT1的
中断标志位。 ● TCON用来控制定时器的启/停和外部中断管理。 ● TCON可读可写,可位操作。
TCON (88H)
D7 TF1
D6 TR1
D5 TF0
D4 TR0
D3 IE1
D2 IT1
D1 IE0
D0 IT0
外部中断Interrupt 定时器Timer 高四位用于定时器,低四位用于外部中断 1)TF1—Timer Flowing,定时器T1溢出中断标志位 T1溢出,硬件自动置标志位TF1=1,CPU响应中断, 硬件自动清TF1=0。 2)TF0—定时器T0溢出中断标志位 3)IE1—Interrupt External,外部中断1中断标志位 若P3.3上有有效的中断信号,硬件置位IE1=1 4)IE0—外部中断0(P3.2)中断标志位 另外4位中,TR0、TR1用于定时器T0和T1的启/停控制 IT0、IT1用于设置外部中断的触发方式
第5章80C51的中断系统及定时计数器m

INRET:POP ACC
POP PSW RETI DV1: … … AJMP INRET
…… DV4: … …
AJMP INRET
;XI1中断服务程序 ;XI4中断服务程序
特点:速度慢,优 先级低的中断源响 应速度慢,可以采 用硬件排队电路 74LS148优先权编 码器。
2019/7/13
17
5.3 80C51单片机的定时/计数器
CPU进行工作A时发生了事件B,请求CPU马上处理 CPU暂时中断当前工作A,转去处理事件B 事件B处理完后,回到工作A被中断的地方继续处理A工作
主程序A 断点
……
响应
返回
RETI 中断服务程序B
中中断断的源优点 中利断用请率求高 中实断时响性应强 中可断靠服性务好
中断返回
中断系统
2019/7/13
第5章 80C51的中断系统及定时/计数器
5.1 80C51单片机的中断系统 5.2 80C51单片机的中断处理过程 5.3 80C51单片机的定时/计数器 5.4 80C52的定时/计数器T2(不讲)
2019/7/13
1
5.1 80C51单片机的中断系统
5.1.1 80C51中断系统的结构
中断的概念
TRx:Tx运行控制位。置1时开始工作;清0时停止工作。 TRx要由软件置1或清0(即启动与停止要由软件控制)。
2019/7/13
22
5.3.3 定时/计数器的工作方式
T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。
方式0:13位方式
TCON
TF1 D7
申请 中断
TR1
溢出
TF0
TH0 TL0
定时器中断程序和单片机AT80c51写全亮全灭交替的led灯程序

{
; //主程序在这里就不断自循环,实际应用中,这里是做主要工作
}
}
//定时器0中断
timer0() interrupt 1 // 定时器0中断是1号
{
TH0=0x00; //写入定时器0初始值0x0005
sbit P10 = P1^0; //要控制的LED灯
sbit K1= P3^2; //按键K1
//用定时器中断闪烁LED
void main(void) //主程序
{
TMOD=0x01; //定时器0,16位工作方式
【例1】这是一个简单的定时器程序,由一个循环组成,在点亮接在P1.0 口的LED之后,延时一段时间,再灭掉LED,又延时一段时间,之后循环到前面。按全速运行,可以看到P1.0口上接的LED 灯不断地闪烁。
#include <reg52.h> //包括一个52标准内核的头文件
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==100)
{
P0=0x00;
}
if(tt>=200)
{
tt=0;
P0=0xff;
}
}
void init()
{
TMOD=0x01;
sbit P13 = P1^3;
bit ldelay=0; //长定时溢出标记,预置是0
//定时器中断方式的跑马灯
void main(void) //主程序
{
unsigned char code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入P1的值
第5章80C51的中断系统及定时计数器(2)定时计数器概要

2018/11/2
数数源程序的 数数中断的四 四要素 要素
0000H MAIN 000BH DVT0 0100H TMOD,#01H ;置T0方式1 TH0,#0D8H;装入计数初值 TL0,#0F0H ET0 ;T0开中断 EA ;CPU开中断 TR0 ;启动T0 $ ;等待中断
求计数初值X: N=24 X=256-24=232=E8H 应将E8H送入TH0和TL0中
2018/11/2
20
主程序
ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100H 中断服务程序 MAIN:MOV TMOD,#06H ;置T0计数方式2 MOV TH0,#0E8H;装入计数初值 DVT0:SETB P1.0 MOV TL0,#0E8H NOP SETB ET0 ;T0开中断 NOP SETB EA ;CPU开中断 CLR P1.0 SETB TR0 ;启动T0 RETI SJMP $ ;等待中断 END
2018/11/2 21
定时应用
系统时钟为6MHz时,各种方式下的最长定时的计算: 由最长定时=2n×Tcp
,而Tcp=
2s
方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 晶振为12 MHz时,Tcy为1µS。最长可定时65ms 定时时间较小时(小于65ms)。可直接采用方式1完成定 时任务。 两种方式对溢出作出反应:查询、中断
计数范围:1~65536
计数初值要分成2个字节分别送入TH0、TL0
13
2018/11/2
80C51单片机的中断与定时PPT

机器周期。
(2)定时中断 定时中断是为满足定时或计数的需要设置的。80C51单片机
共有2个定时器/计数器中断源,即T0和T1。 定时器/计数器内部的计数结构对脉冲信号进行计数,当计
(c)ET0、ET1:定时器/计数器中断允许控制位 ET0、ET1=0,禁止定时(或计数)中断; ET0、ET1=1,允许定时(或计数)中断;
(d)ES:串行中断允许控制位 ES=0,禁止串行中断; ES=1,允许串行中断;
注意:
1)80C51单片机复位后(与I中E)断=控00制H,有即关中的断控系制统位处共于有禁5位止:状态
6单片机的中断与定时系统615中断请求的撤消中断响应后tcon或scon中的中断请求标志应及时清除否则就意味着中断请求依然存在弄不好就会造成中断的重复查询和响应因此必须在中断响应后及时清除中断请求信号即将中断请求标志位清0
第5章 80C51单片机的中断与定时
教学基本要求: (1)了解单片机系统有关中断的概念; (2)了解单片机定时器/计数器的功能; (3)熟悉与中断控制有关的控制寄存器的功能及用法; (4)熟悉与定时/计数控制有关的控制寄存器功能及用法; (5)掌握单片机中断系统的应用方法; (6)掌握单片机定时器/计数器的应用方法; 教学重点: (1)单片机中断系统的中断服务流程; (2)单片机定时器/计数器的工作方式0、2; 教学难点: (1)中断采样、中断查询、中断响应、中断撤消
对于电平方式的外中断请求,采样为高→IE0(IE1)→0, 为低→IE0(IE1)→1;
对于脉冲方式外中断请求,采样先高后低→IE0(IE1)→1 ;否则IE0(IE1)→0。
80C51中断系统和定时器

4.1 中断系统
4.1.1 中断系统的基本概念 2.中断技术的应用 并行处理 CPU可以与多台外设并行工作,并分时与他们进行信息交换,提 高了CPU的工作效率。 实时控制 单片机应用系统可能随机请求CPU提供服务。有了中断系统, CPU就可以立即响应并予以处理。 故障处理 单片机系统在工作时可能会出现一些突发故障,如电源断电, 存储器出错,程序执行错误(如除数为0)等,一旦出现故障,CPU 就可及时转去执行故障处理程序,而不必停机。 3.中断系统 为实现中断功能而配置的硬件和编写的软件就是中断系统。
4.1 中断系统
4.1 中断系统
ORG LJMP ORG LJMP ORG START:MOV MOV SETB L1:MOV MOV CLR L2:RLC MOV ACALL DJNZ MOV L3:RRC 0000H START 0003H INT0 0100H SP,#60H IE,#81H IT0 A,#0FFH R0,#8 C A P1,A DELAY R0,L2 R0,#7 A
4.1 中断系统
4.1.2 中断源 能够向CPU发出中断申请的部件称为中断源。80C51单片机有5 能够向CPU发出中断申请的部件称为中断源。80C51单片机有5 CPU发出中断申请的部件称为中断源 单片机有 个中断源。 个中断源。见下表
中断源 外部中断 INT 0 定时器T0中断 外部中断 INT1
4.1 中断系统
4.1.3 中断控制 2.中断优先级寄存器IP 2.中断优先级寄存器IP 中断优先级寄存器 如果几个相同级别的中断源同时申请中断, 如果几个相同级别的中断源同时申请中断,则根据以下自然 顺序响应: 顺序响应:
第5章-80C51单片机的中断系统教程文件

2、SCON(串行口控制寄存器)的中断标志
❖与中断有关的是其低2位 ❖RI(SCON.0),串行口接收中断标志位。当允 许串行口接收数据时,每接收完一个串行帧,由 硬件置位RI。同样,RI必须由软件清除。 ❖TI(SCON.1),串行口发送中断标志位。当 CPU将一个发送数据写入串行口发送缓冲器时, 就启动了发送过程。每发送完一个串行帧,由硬 件置位TI。CPU响应中断时,不能自动清除TI, TI必须由软件清除。 ❖单片机复位后,TCON和SCON各位清0。
第5章-80C51单片机的中断系统
主程序A
断点
响应 中断服务程序B
返回
……
RETI
引起CPU中断的根源,称为中断源。中断源向CPU提出的 中断请求。CPU暂时中断原来的事务A,转去处理事件B。对 事件B处理完毕后,再回到原来被中断的地方(即断点),称 为中断返回。实现上述中断功能的部件称为中断系统(中断 机构)。
二、中断优先级控制
80C51单片机有两个中断优先级,即可实现二级中断服 务嵌套。每个中断源的中断优先级都是由中断优先级寄存器 IP中的相应位的状态来设定的 。某位设定为1,则相应中断源为
高优先级;某位设定为0,则相应中断源为低优先级。单片机复位时, IP=0,各中断源同为低优先级。
❖PX0(IP.0),外部中断0优先级设定位; ❖PT0(IP.1),定时/计数器T0优先级设定位; ❖PX1(IP.2),外部中断1优先级设定位; ❖PT1(IP.3),定时/计数器T1优先级设定位; ❖PS (IP.4),串行口优先级设定位。
5.2.2 中断响应过程
❖将相应的优先级状态触发器置1(以阻断 后来的同级或低级的中断请求)。
第5章 80C51单片机的中断与定时

中断控制寄存器软件置1:中断总允许,具体中断是否被允许受其具体中断位是否为1控制软件清0:中断总禁止,禁止所有中断,无论其它具体中断位是1还是0EX0(EX1)—外部中断允许控制位软件置1:允许外部中断0、外部中断1产生中断软件清0:禁止外部中断0、外部中断1产生中断EX0(EX1)—外部中断允许控制位软件置1:允许外部中断0、外部中断1产生中断软件清0:禁止外部中断0、外部中断1产生中断ET0(ET1)—定时/计数器中断允许控制位软件置1:允许定时/计数器0、定时/计数器1产生中断软件清0:禁止定时/计数器0、定时/计数器1产生中断ES—串行中断允许控制位软件置1:允许串行中断产生中断软件清0:禁止串行中断产生中断2、定时器控制寄存器(TCON)—可位寻址的寄存器01硬件置1:当采样到INT 0(INT 1)端出现有效中断请求时,硬件自动置1 硬件清0:成功响应中断请求转入中断服务程序时,硬件自动清0IT0(IT1)—外部中断请求信号方式控制位软件置1:代表的是脉冲触发方式,脉冲下降沿时产生中断软件清0:代表的是电平触发方式,低电平时产生中断TF0(TF1)—计数溢出标志位工作于中断方式时:作中断请求位硬件置1:计数器溢出时,硬件自动置1硬件清0:成功响应中断请求转入中断服务程序时,硬件自动清0 工作于查询方式时:作查询状态位硬件置1:计数器溢出时,硬件自动置1软件清0:查询有效后要用软件清0硬件置1:发送完一桢串行数据后,硬件自动置1硬件清0:成功响应中断请求转入中断服务程序时,硬件自动清0RI —串行口接收中断请求标志位硬件置1:接收完一桢串行数据后,硬件自动置1硬件清0:成功响应中断请求转入中断服务程序时,硬件自动清0查询中断中断向量中断 向量PX0—外部中断0优先级别设置位PX1—外部中断1优先级别设置位PT0—定时/计数器0优先级别设置位PT1—定时/计数器1优先级别设置位PS —串行中断优先级别设置位定时/计数器的控制寄存器01工作于中断方式时:作中断请求位硬件置1:计数器溢出时,硬件自动置1硬件清0:成功响应中断请求转入中断服务程序时,硬件自动清0 工作于查询方式时:作查询状态位硬件置1:计数器溢出时,硬件自动置1软件清0:查询有效后要用软件清0TR0(TR1)—定时器运行控制位软件置1:启动定时/计数器工作软件清0:停止定时/计数器工作GATE —门控位软件置1:以外部中断请求信号INT0(INT 1)和运行控制位TR 0(TR 1)联合启动定时器(通常使用于脉冲宽度的检测)软件清0:以运行控制位TR 0(TR 1)启动定时器(正常应用)C/T —定时方式/计数方式选择位软件置1:工作在计数方式 软件清0:工作在定时方式M 1 M 0—工作方式选择位M 1 M 0=00:方式0 M 1 M 0=01:方式1 M 1 M0=10:方式2 M 1 M 0=11:方式33、中断允许控制寄存器(IE )—可位寻址的寄存器 软件置1:中断总允许,具体中断是否被允许受其具体中断位是否为1控制 软件清0:中断总禁止,禁止所有中断,无论其它具体中断位是1还是0ET 0(ET 1)—定时/计数器中断允许控制位软件置1:允许定时/计数器0、定时/计数器1产生中断 软件清0:禁止定时/计数器0、定时/计数器1产生中断五、工作方式0-3的举例1 方式0例:设单片机晶振频率Fosc=6MHz ,使用定时器1以方式0产生周期为500us 的等宽正方波脉冲,并由P1.0输出。
80C51的中断系统及定时计数器

INSE0: PUSH PSW PUSH ACC …… …… POP ACC POP PSW RETI
;转外部中断0服务程序入口 ;转外部中断1服务程序入口
;XI0中断服务程序
2021/7/30
20
INSE1:PUSH PSW
;中断服务程序
PUSH ACC
JB P1.0,DV1 ;P1.0为1,转XI1中断服务程序
80C51的中断系统及定时/计数器
5.1 80C51单片机的中断系统 5.2 80C51单片机的中断处理过程 5.3 80C51单片机的定时/计数器 5.4 80C52的定时/计数器2
2021/7/30
1
5.1 80C51单片机的中断系统
5.1.1 80C51中断系统的结构
中断的概念
CPU进行工作A时发生了事件B,请求CPU马上处理 CPU暂时中断当前工作A,转去处理事件B 事件B处理完后,回到工作A被中断的地方继续处理A工作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sbit P40 = 0xE8ห้องสมุดไป่ตู้//标准I/O口
sbit P41 = 0xE9;//标准I/O口
sbit P42 = 0xEA;//标准I/O口 >>INT3 外部中断3
sbit P43 = 0xEB;//标准I/O口 >>INT2 外部中断2
void Timer2() interrupt 5; >>ET2
void Int2() interrupt 6; >>EX2
void Int3() interrupt 7; >>EX3
*******************************************************/
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1; //串口1接收中断标志[软清零]
sbit RI = SCON^0; //串口1发送中断标志[软清零]
/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;
/*--------------------------------------------------------------------------
REG52.H 本头文件由 雷天音 注释
--------------------------------------------------------------------------*/
/* 计时/定时器控制寄存器TCON */
sbit TF1 = TCON^7; //定时器1溢出标志
sbit TR1 = TCON^6; //定时器1运行控制位
sbit TF0 = TCON^5; //定时器0溢出标志
sbit TR0 = TCON^4; //定时器0运行控制位
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
void Timer0() interrupt 1; >>ET0 [溢出位TF0]
void Int1() interrupt 2; >>EX1
void Timer1() interrupt 3; >>ET1 [溢出位TF1]
void UART() interrupt 4; >>
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A; //计时/定时器0低8位
/* 中断允许寄存器IE */
sbit EA = IE^7; //总中断
sbit ET2 = IE^5; //计时/定时器2溢出中断允许 [8052 only]
sbit ES = IE^4; //串口1中断允许
sbit ET1 = IE^3; //计时/定时器1溢出中断允许
/********************************TMOD寄存器************************
↓↓↓↓定时器1↓↓↓↓ ↓↓↓↓定时器0↓↓↓↓
----7-----6----5-----4----------3-----2----1-----0-----
sbit IE1 = TCON^3; //外部中断1请求源标志,平时不用操作该位
sbit IT1 = TCON^2; //外部中断源1类型选择,0为低电平,1为下降沿
sbit IE0 = TCON^1; //外部中断0请求源标志,平时不用操作该位
sbit IT0 = TCON^0; //外部中断源0类型选择,0为低电平,1为下降沿
#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
sfr TL1 = 0x8B; //计时/定时器1低8位
sfr TH0 = 0x8C; //计时/定时器0高8位
sfr TH1 = 0x8D; //计时/定时器1高8位
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sbit EX1 = IE^2; //外部中断1中断允许
sbit ET0 = IE^1; //计时/定时器0溢出中断允许
sbit EX0 = IE^0; //外部中断0中断允许
/*************中断源优先级及标号******中断允许位********
void Int0() interrupt 0; >>EX0
GATE C/T M1 M0 GATE C/T M1 M0
[0为定时器,1为计数器↑] [0为定时器,1为计数器↑]
M1=0,M0=1时工作在16位计时/定时器状态
*******************************************************************/
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* STC MCU Extensions */
sbit P44 = 0xEC;//标准I/O口 >>PSEN 外部程序储存器选通信号输出
sbit P45 = 0xED;//标准I/O口 >>ALE 地址锁存允许信号输出/编程脉冲输入
sbit P46 = 0xEE;//标准I/O口 >>EA 内外储存器选择
/* BIT Registers */
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2 = T2CON^0;
#endif