外部中断源的扩展方法
- 格式:doc
- 大小:27.50 KB
- 文档页数:2
1.25单片机内部由哪几部分电路组成?各部分电路的主要功能是什么?解:单片机内部由CPU、存储器和I/O接口等电路组成。
CPU的主要功能是对二进制数进行算术和逻辑运算、执行指令(从ROM中取指令,对指令译码,发各种控制信号使CPU和其他部分协调一致的工作,完成指令的功能),存储器由ROM和RAM组成,ROM的主要功能是存储单片机应用系统的程序,RAM的主要功能是存储实时数据或作为通用寄存器、堆栈、数据缓冲区。
I/O接口的主要功能是负责单片机和外设、外部存储器间的通信。
第二章存在的错别字问题:“振荡”写出“推荡”;“芯片”写成“蕊片”。
2.3、程序状态字PSW各位的定义是什么?解:PSW的各位定义如下:Cy:进位标志位;AC:辅助进位位;F0:用户标志位;RS1、RS0:寄存器选择位;OV:溢出标志位;P:奇偶标志位;PSW1:未定义。
2.4、什么叫堆栈?8031堆栈的最大容量是多少?MCS51堆栈指示器SP有多少位,作用是什么?单片机初始化后SP中的内容是什么?解:堆栈:符合“先进后出”或“后进先出”存取规律的RAM区域。
8031堆栈的最大容量是128B;MCS-51堆栈指针SP有8位,作用是存放栈顶(/栈低)地址;单片机初始化后(即单片机复位后)SP中的内容是07H。
存在的问题:1、堆栈的定义中,未答出“RAM区域”,而用了“部件”;2、只说了“单片机初始化后(即单片机复位后)SP中的内容是栈底地址”,未说明具体值07H;3、8031堆栈的最大容量错成128M或256B。
2.5、数据指针DPTR有多少位,作用是什么?解:数据指针DPTR有16位;作用是存放ROM或外部RAM的地址。
2.7、8051片内RAM容量有多少?可以分为哪几个区?各有什么特点?解:8051的片内RAM容量有128B;分为三个区:工作寄存器区、位寻址区和便笺区;存在的问题:1、8051的片内RAM容量错成256B。
2.8、8051的特殊功能寄存器SFR有多少个?可以位寻址的有哪些?解:8051的SFR有21个,可位寻址的有11个:ACC、B、PSW、IP、P3、IE、P2、SCON、P1、TCON 和P0。
)/INT0)的溢出中断请求(TF0,它们设置在特殊IT0:外部中断0触发方式控制位。
当IT0=0时,为电平触发方式(低电平有效)。
当IT0=1时,为边沿触发方式(下降沿有效)。
IE0:外部中断0中断请求标志位。
(IE0=1,外部中断0向CPU申请中断)IT1:外部中断1触发方式控制位。
IE1:外部中断1中断请求标志位。
串行口控制寄存器SCON中的低两位用作串行接口中断标志位,其中:RI(SCON.0),串行口接收中断标志位。
当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。
CPU响应中断时,不能自动清除RI,RI必须由软件清除。
TI(SCON.1),串行口发送中断标志位。
当CPU将一个发TCONSCON 总结:EX0(IE.0),外部中断0允许位;ET0(IE.1),定时/计数器T0中断允许位;EX1(IE.2),外部中断1允许位;ET1(IE.3),定时/计数器T1中断允许位;ES(IE.4),串行口中断允许位;每一个中断源有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断,例:允许定时器T0中断:SETB EA位操作命令SETB ET0或:IE定的。
PX0(IP.0),外部中断0优先级设定位;PT0(IP.1),定时/计数器T0优先级设定位;PX1(IP.2),外部中断1优先级设定位;PT1(IP.3),定时/计数器T1优先级设定位;注意:1、该寄存器可以位寻址2、系统复位时均为低优先级0 1 0 1 0中断优中断请求标志位中断源允许总允许先级下列三个条件中任何一个都可阻碍CPU1、CPU正在处理同级或高优先级中断;2、当前查询的机器周期期。
即在完成所执行指令前,不会响应中断,从而保证指令在执行过程中不被打断;3、正在执行的指令为RET、RETI或任何访问IE或IP寄存器的指令。
只有在这些指令后面至少再执行一条指令时才能接受中断请求。
若由于上述条件的阻碍中断未能得到响应,当条件消失时该中断标志却已不再有效,那么该中断将不被响应。
5-1 什么是中断系统?中断系统的功能是什么?实现中断功能的硬件和软件称为中断系统.中断系统功能包括进行中断优先排队、实现中断嵌套、自动响应中断和实现中断返回。
5-2 什么是中断嵌套?CPU在响应某一个中断源中断请求而进行中断处理时,若有中断优先级更高的中断源发出中断请求,CPU会暂停正在执行的中断服务程序,转向执行中断优先级更高的中断源的中断服务程序,等处理完后,再返回继续执行被暂停的中断服务程序,这个过程称为中断嵌套。
5-3 什么是中断源?MCS-51有哪些中断源?各有什么特点?①实现中断功能的硬件和软件称为中断系统,产生中断请求的请求源称为中断源.②5个中断源中共有两个外部中断、两个定时中断和一个串行中断。
(1)外部中断源外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的,可以通过两个固定引脚来输入到单片机内的信号,即外部中断0(INT0)和外部中断1(INT1)。
(2)定时中断类定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的,即T0和T1中断。
(3)串行口中断类串行口中断是为接收或发送一帧串行数据,硬件自动使RI和TI置1,并申请中断5-4 MCS-51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应?(1)MCS-51单片机的最短响应时间为3个机器周期,最长响应时间8个机器周期。
(2)有下列任何一种情况存在,则中断响应会受到阻断。
① CPU正在执行一个同级或高一级的中断服务程序;②当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令还未完成前,任何中断请求都得不到响应;③正在执行的指令是返回指令或者对专业寄存器IE、IP进行读/写的指令,此时。
在执行RETI或者读写IE或IP之后,不会马上响应中断请求,至少在执行一条其他之后才会响应。
若存在上述任何一种情况,中断查询结果就被取消,否则,在紧接着的下一个机器周期,就会响应中断。
实验5 外部IO中断和外扩RAM使用1.实验目的收悉GPIO的各个存器,学会如何通过程序语言配置GPIO的输入输出属性和中断的各种属性,以及通过程序语言将变量及程序放入外扩的RAM中。
2.实验主要内容(1)在CCS软件中,用C语言编写程序进行GPIO的输入输出控制,以及中断的配置,达到通过外部IO中断开启定时器中断的效果。
(2)在CCS软件中,用C语言编写程序进行外扩RAM的控制,后通过cmd文件的修改使得程序和变量放入外扩RAM的地址内。
3.实验基本原理(1)GPIO操作实验GPIO的主要寄存器包括GPIO复用寄存器(GPxMUXn)、GPIO限制控制寄存器(GPACTRL、GPBCTRL)、GPIO限制选择寄存器(GPxQSELn)、GPIO方向寄存器(GPxDIR)、GPIO上拉禁用寄存器(GPxPUD)、GPIO数据寄存器(GPxDAT)、GPIO 置位、清零、翻转寄存器(GPxSET、GPxCLEAR、GPxTOGGLE)、GPIO外部中断源选择寄存器(GPIOXINTnSEL和GPIOXNMISEL)、GPIO低功耗唤醒源选择寄存器(GPIOLPMSEL)。
对上述寄存器中特定寄存器的特定位进行赋值后,可以做到GPIO输入输出属性的配置及中断引脚、中断条件的配置等。
若需用I/O口作为外部中断源的输入引脚,则需配置GPIOINTxSEL和GPIOXNMISEL寄存器来指定I/O口。
(2)外扩RAM使用实验XINTF模块用到了两个时钟:XTIMCLK和XCLKOUT,图给出了这两个时钟和CPU时钟SYSCLKOUT的关系。
对XINTF区域的访问都是基于内部XINTF时钟(XTIMCLK)。
配置XINTF时,用户必须配置内部时钟XTIMCLK与SYSCLKOUT的比率关系。
通过配置XINTCNF2寄存器,可以将XTIMCLK频率设置成等于SYSCLKOUT或SYSCLKOUT的1/2。
XINTF寄存器包括XINTF时序寄存器(XTIMING0/6/7)、XINTF配置寄存器(XINTCNF2)、XBANK寄存器(XBANK)、XRESET寄存器(XRESET)等,对外部RAM的配置基于以上对寄存器的操作来进行。
外部中断源的扩展方法
利用单片机的中断功能可以提高CPU效率、提高事件的实时处理能力,但80C51单片机的外部中断源只有2个,如果需要中断处理的外部事件超过2个,就需要考虑扩展外部中断源,通常扩展方法有以下2种:
1、利用定时器/计数器扩展
基本原理是,将定时器/计数器设置成计数器,通过外部引脚P3.4(T0)及P3.5(T1)对外部脉冲计数,初始化时设置为工作方式2,且计数初值设置为0FFH,这样在中断允许并启动计数器后,只要引脚出现一个下降沿信号, 计数器加1后便产生定时器/计数器溢出中断。
因此可以将引脚P3.4及P3.5作为外部中断引入端。
将T0扩展成外部中断的程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
AJMP DT0
ORG 1000H
MAIN: MOV TMOD, # 06H ; T0,方式2,计数方式
MOV TL0, # 0FFH ; 置计数初值
MOV TH 0, # 0FFH
SETB TR0 ; 启动T0工作
SETB EA ; CPU 开放中断
SETB ET0 ; T0允许中断
…
ORG 2000H
DT0: …;中断服务程序
2、利用中断、查询相结合扩展法
通过1
INT(正体)扩展3个外部中断的硬件电路连接如图6.15。
图6.15扩展3个外部中断
图6.15中,3个外部中断引入端通过一个与门连接至80C51的INT1,当WZD1、WZD2、WZD3全部为高时,与门输出高,没有中断申请,当WZD1、WZD2、WZD3中任何一个由高变低时,与门输出将由高变低,产生中断申请信号,CPU即可以响应中断,在中断服务程序中,首先就要判断是WZD1、WZD2、WZD3中的哪个引起的中断,确定中断源。
电路上WZD1、WZD2、WZD3分别连接至P1.0、P1.1、P1.2,所以通过查询P1.0、P1.1、P1.2三个引脚,就可以找到中断源。
通过INT1扩展3个外部中断的程序如下:
ORG 0000H
LJMP MAIN
ORG 0013H
LJMP INT1 ; 转外部中断1服务程序
ORG 0100H
MAIN: …
CLR IT1 ; 外部中断1设置为电平触发方式
SETBEA
SETBEX1
…
INT1: …
JNB P1. 0, WZD1 ; P1. 0为0, 转WZD1中断服务程序
JNB P1. 1, WZD2 ; P1. 1为0, 转WZD2中断服务程序
JNB P1. 2, WZD3 ; P1. 2为0, 转WZD3中断服务程序
RETI
WZD1: …; WZD1中断服务程序
RETI
WZD2: …; WZD2中断服务程序
RETI
WZD3: …; WZD3中断服务程序
RETI
利用定时器/计数器扩展外部中断源, 硬件结构和软件编程都很简单, 但前提是T0、T1未被使用, 且最多只能扩展两个外部中断源。
中断、查询相结合的扩展法, 原则上可以处理任意多个中断源, 但是当所要处理的外部中断源的数目较多,而其响应速度又要求很快时, 采用这种方法有可能满足不了时间上的要求。
在需要扩展的中断源数较多,且对响应时间有要求时,可以采用外加中断扩展芯片的方法,如芯片8259A、74LS148,但这样将增加电路及编程的复杂程度。
单片机设计及学习资料:
/G2S/Template/View.aspx?action=view&courseType=0&courseId=178。