第4章单片机内部电路剖析

上传人:今*** 文档编号:106894140 上传时间:2019-10-16 格式:PPT 页数:72 大小:13.14MB
返回 下载 相关 举报
第4章单片机内部电路剖析_第1页
第1页 / 共72页
第4章单片机内部电路剖析_第2页
第2页 / 共72页
第4章单片机内部电路剖析_第3页
第3页 / 共72页
第4章单片机内部电路剖析_第4页
第4页 / 共72页
第4章单片机内部电路剖析_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《第4章单片机内部电路剖析》由会员分享,可在线阅读,更多相关《第4章单片机内部电路剖析(72页珍藏版)》请在金锄头文库上搜索。

1、第4章 单片机内部电路,中断、优先级、中断服务、嵌套等。,4.1 复位及复位电路,4.2 输入输出结构,4.3 中断结构,CPU与外设交换信息通常有如下三种形式: 程序控制传送方式:无条件传送和查询方式传送 中断方式 直接存贮器存取(DMA)方式。,一、 中断的概念,TCON 定时/计数器 控制Reg SCON 串行口 控制Reg. IE 中断 允许Reg. IP 中断 优先级Reg.,二、89C51的中断系统,5个中断源有两个中断优先级(可由编程确定优先级高低),可以实现两级中断服务程序嵌套。,2. 中断管理与控制,SFR, 均可位寻址 具有“位址名” 见P.30 表2-5。, TCON与S

2、CON锁存各中断请求信号 TCON:定时/计数器控制寄存器,管理4个中断源。,其余:TR1,TR0定时器运行控制位(见定时/计数器),注意:, 对INT0、INT1的中断申请,当为边沿触发方式时,若CPU响应中断,则 IEi 被自动清0;而电平触发方式则不然,必须在引脚外加硬件(如D触发器)使其撤销外部中断请求。,SCON:串口控制寄存器,当串口发送(或接收)一帧串行数据后,由内部硬件置中断标志 TI (或 RI )为“1”。 CPU响应串行口的中断时,并不清零TI、RI,必须由软件清0。, I E 中断允许Reg. 实现对CPU和各中断源的两级控制,CPU复位时,IE中各位为“0”(所有中断

3、被禁止)。,1:高优先级,0:低优先级, IP 中断优先级Reg.定义中断优先级,P118. 例:假设允许片内定时器/计数器中断,禁止其它中断。试根据假设条件设置IE的相应值。 用字节操作指令 MOV IE , #8AH 或 MOV A8H , #8AH 用位操作指令 SETB ET0 ;定时/计数器0允许中断 SETB ET1 ;定时/计数器1允许中断 SETB EA ;CPU开中断,()89C51复位时,IP的低5位全部清零,将所有中断源设置为低优先级中断。,例:希望顺序 TF0、TF1 IE0、IE1 串,则可定义: 1 1 0 0 0 又例见P120 5-2,()要改变优先级,可设置I

4、P寄存器中的相应值。,注意:,注意:RESET时,TCON、SCON、IE、IP 全部清0。, 开中断(CPU,源) 优先级排队 执行完当前指令才响应(若是RETI或访问IE、IP的指令时,需执行完其后的一条指令才响应),三、中断响应过程及响应时间,1. 中断响应条件,2. 中断响应过程,特点: 各“中断源”对应的“入口”固定。 见p122 表5-1 “入口”间隔小。一般,放不下一个中断服务子程 序,故实际其中放跳转指令。, 当CPU正在执行一个同级或高一级的中断服务程序时,中断申请不能得到响应。,3中断优先级与中断嵌套, 若希望中断嵌套,可设置各中断源为不同优先级。由于CPU响应中断时,并不

5、主动关中断,因而可实现中断嵌套。, 若要在执行当前中断程序时禁止更高优先级中断,可以在中断服务程序开头用软件关闭CPU,或禁止某中断源中断,在中断返回前再开放中断。,2. 外中断多于2个时可用中断+查询方式 ( 例),4外部中断响应时间 约38个机器周期,四、外部中断扩展方法,当任一外部中断源高电平申请中断,则INT0引脚电平变低,究竟是哪一个外设申请中断,可通过程序查询获知。,五、中断程序举例,例1. P.126 例- P.128 例5-4,自看。,中服少于8个字节,可从规定的中断服务入口地址开始。程序大于8个字节,在相应的入口处写一条跳转指令。,1. 主程序 主程序起始地址 0030H以后

6、开始。 主程序初始化内容 对内部部件或扩展芯片进行初始工作状态设定 以中断为例:上电复位后,TCON、SCON、IE、IP全为0, 应初始化开放中断、置优先级等。,2. 中断服务程序,中断服务 程序起始 地址,ORG 0000H AJMP MAIN ORG 0003H AJMP INSER ORG 0030H MAIN: SETB EX0 SETB IT0 SETB EA HERE: SJMP HERE ORG 0200H INSER: MOV A, #0F0H MOV P1,A MOV A, P1 SWAP A MOV P1,A RETI END,返回,例5-3 采用中断边沿触发方式, 中断

7、时完成一次读/写操作。,表 5-1 中断源及其对应的向量,0000H 0001H 0002H 0003H 000BH,程序,8字节,8字节,返回,返回,定时:对片内振荡器的f0/12(机器周期)进行计数。 定时时间=(2n初值)机器 周期,特点:定时或计数时,都不占用CPU时间。除非定时/计数器溢出,才可能中断CPU的当前操作。,89C51片内有两个16位可 编程定时/计数器T0、T1,一、定时/计数器结构及工作原理,计数:计T0/T1端下降沿 。检测一个1至0的跳变需要两个机器周期,故最高计数频率为振荡频率的1/24。同时,高电平至少保持 一个完整的机器周期。,4.4 定时/计数器,定时/计

8、数器工作方式由控制字TMOD、TCON来决定,(注意:TMOD不能以位寻址),1. TMOD(89H)工作方式寄存器,二、控制字和工作方式,2. TCON(88H)控制和标志寄存器,(注意:除了可字节寻址外,还可位寻址),SETB TR0 SETB TR1,定时/计数器0 可以工作在模式 03 定时/计数器1 可以工作在模式 02,图6-7,1. 模式0,三、工作方式,M1 M0 0 0,2. 模式1:16位 , 其他同方式0 。 (初值=216t / 机器周期),3. 模式2:8位 ,时间常数可以自动装载 , 其余同方式0。 初始化时,TH0TL0,具有相同的初值。 t = (28TH0初值

9、)机器周期 P136,例6-2,模式2的应用。,START:MOV TMOD,#06H ;设置T0为模式2,外部计数方式 MOV TH0,#0FFH ;T0计数器初值255 MOV TL0,#0FFH SETB TR0 ;启动T0计数 LOOP1:JBC TF0,PTF01 ;查询T0溢出标志,TF01转移,且TF0=0. SJMP LOOP1 PTF01: CLR TR0 ;停止计数 MOV TMOD,#02H ;设置T0为模式2,定时方式 MOV TH0,#06H ;T0定时500us MOV TL0,#06H CLR P1.0 ;p1.0清0 SETB TR0 ;启动定时500us LO

10、OP2:JBC TF0,PTF02 ;查询溢出标志,定时到TF01转移,且TF0=0. SJMP LOOP2 PTF02: SETB P1.0 ;P1.0置1 CLR TR0 ;停止计数 SJMP START,外部计数方式 定时方式 外部计数方式 定时方式,P136, 例6-2,模式3:仅对定时/计数器0有效 T0TH0+TL0 对定时/计数器1,停止计数。, TH0占用T1的控制位TR1和中断标志位TF1,仅能工作在定时方式,其启动和关闭仅受TR1的控制。,将定时/计数器0分成两个独立的8位计数器TH0、TL0。,定时/计数器1不能工作在方式3,若要其工作在方式3,就会立即停止计数,即保持住

11、原有的计数值。,通常,写入控制字的次序为: 1. 把工作方式控制字写入TMOD 2. 把定时、计数初值装入TLx、THx(x0、1) 3. 置位EA使CPU开放中断 4. 置位ETx允许定时/计数器中断(需要时) 5. 置位TRx以启动计数,当工作于定时状态时,由于定时/计数器是计数机器周期,每个机器周期包括12个振荡周期,则有: 1个机器周期 = 2us(6MHz) 或 = 1us(12MHz),因为是加1计数器,所以当计数值为X时,装入定时/计数器的初值应为 2nX: 方式0, n=13 方式1, n=16 方式2、3, n=8,例1:设单片机的fosc6MHz ,T0工作在方式0 : 求

12、T0的最大定时时间T; 产生1ms定时的T0初值; 1ms定时在P1.0引脚输出周期为2ms的方波。 t = (213初值)机器周期 (12 / (6106)) t = (213初值)2us, T0最大定时时间对应于初值0,所以有: tmax21312 / (6106)16384 us 16 .384ms,程序: 以中断方式: ORG 0000H AJMP MAIN ;转主程序 ORG 000BH ;到中断服务程序 AJMP TOINT,设fosc6MHz, 可通过定时/计数器定时1ms申请中断, 在中断程序中让 P1.0 输出1 或 0实现。 当fosc6MHz时,振荡周期1/6 us 机器

13、周期121/6 us2us 所以,定时时间常数为:1ms/2us500。 方式0时计数器为13位, 计数常数21350076921E0CH 若用方式1,计数器为16位,计数常数21650065036 FE0CH, 以查询方式 ORG 0000H AJMP MAIN ORG 2000H MAIN: MOV TMOD, #01 ;定时器0工作在方式1 MOV TL0 , #0CH MOV TH0, #0FEH SETB TR0 ;启动定时器0工作 LOOP:JNB TF0 ,$ ;查询TF0,若计数器未溢出,原地等待 CLR TF0 CPL P1.0 ;得到方波 MOV TL0,#0CH MOV

14、TH0,#0FEH ;装入16位时间常数 SJMP LOOP, 用方式2做。定时时间为:t(28TL0初值)机器周期。 所以,仅当定时时间不超过tmax方可用方式2。 这时,TL0、TH0赋予相同的值,一旦TL0溢出,置位TF0,并将TH0中的初值自动装入TL0,继续计数,循环往复。,设晶振频率为6MHZ,程序如下: ORG 0000H AJMP MAIN ;转主程序 ORG 000BH ;T0中断首地址 MOV TL0 , #131 ;TL0装入时间常数(256-125) CPL P1.1 ;P1.1口得到方波 RETI ORG 001BH ;T1中断处理程序首地址 MOV TH0 , #0

15、6H ;TH0装入时间常数(256-250) CPL P1.2 ;P1.2口得到方波 RETI MAIN: MOV TMOD , #03H ;T0工作于方式3、定时 MOV TL0 , #131,例4:设定时/计数器T0工作于方式3,TL0和TH0作为两个独立 的8位定时/计数器分别产生250us和500us的定时中断,使 P1.1和P1.2 产生500us和1000us的方波(晶振频率为6MHz )。,注意: 当一个定时器的最大定时时间仍不能满足定时要求,如: 6MHZ时钟时, 一个机器周期为2us, 最大定时时间 655362131072us131ms0.13s 若希望定时 0.2s200ms,则不可能用一个定时器来完成。 这时可以对定时器进行级联。,MOV TH0 , #06H ;送时间常数 SETB EA ;CPU开中断 SETB ET0 ;允许中断 SETB ET1 SETB TR0 ;启动定时 SETB TR1 SJMP $ ;等待,方式3时,由于只能是8位计数器,所以可以在中断程序中辅以软件计数,实现较长

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号