- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 MCS-51中断系统与定时器/计数器; 当CPU正在处理某件事情的时候,外部发生了某一更为重要或更为紧迫的事件,需要CPU暂时停下正在执行的工作去处理这一突发事件,之后再继续执行以前被暂停的下来的工作,这个过程就叫中断。;? MCS-51有5个中断源——2个外部中断源INT0和INT1,2个片内定时器/计数器溢出中断源,1个片内串行口中断源。
分为两级——高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套 。
都是可屏蔽的,由软件设定。;一、MCS-51的中断源;2.中断请求标志; SCON是串行口控制寄存器,字节地址为98H。与中断有关的是它的低两位TI和RI。
1) TI(SCON.1) :串行口发送中断标志位。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能清除TI,TI必须由软件清除。
2)RI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。
;二、MCS-51的中断控制 ;;中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。 ;2.中断响应过程(CPU自动完成)
进入中断响应周期。CPU在中断响应周期要完成下列操作:
1) 根据中断请求源的优先级高低,
使相应的优先级状态触发器置1。
2) 保留断点,把PC内容
压入堆栈保存。
3) 清相应中断请求标志位IE0、
IE1、TF0或TF1。
4) 把被响应的中断源服务
程序入口地址送入PC,进入相应
中断服务程序。;中断服务程序入口地址表;3.中断服务与返回
在编写中断服务程序时加注意的几点:
1) 因各入口地址之间只相隔8个字节,一般的中断服务程序是存放不下的。所以通常在中断入口地址单元处存放—条无条件转移指令,这样就可使中断服务程序灵活地安排在64KB程序存储器的任何空间。
2) 若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断。
3) 注意在中断服务程序中保护现场和恢复现场。
4)中断服务程序的最后一条是返回指令RETI,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处,继续向下执行。 ;4.中断请求的撤除
CPU响应中断请求后,在中断返回(RETI)前,该中断请求信号必须
撤除,否则会引起另外一次中断。
1)定时器/计数器溢出中断标志TF0或TFl,在CPU响应中断后由硬
件自动清除;
2)串行口中断请求标志TI和RI不能由硬件自动清除,需要在中断
服务程序中,用软件来清除相应的中断请求标志;
3)采用边沿触发的外部中断标志IE0或IEl,在CPU响应中断后由
硬件自动清除,但在电平触发时,IE0或IEl受外部引脚中断信
号的直接控制,所以要在中断请求得到CPU响应后及时撤除中断
请求信号,以避免对同一中断请求的多次响应。; 中断系统的初始化是指用户对上述这些特殊功能寄存器中的各控制位进行赋值。
1. 中断系统的初始化步骤
1)设定相应中断源的中断允许控制;
2)设定所用中断源的中断优先级;
3)若为外部中断,则应规定中断触发方式。;2.中断系统应用;程序清单:
ORG 0000H ;主程序
SJMP MAIN
ORG 0013H
AJMP INT1 ;转入服务程序
ORG 0030H
MAIN: SETB IT1 ;设INT1为边沿触发
SETB ET1 ;允许INT1中断
SETB EA ;开放总允许
SJMP $
INT1: ORL P1, #0F0H ;中断服务程序:
MOV A, P1 ;从P1口输入开关状态
SWAP A ;交换高、低4位
MOV P1,A ;输出
文档评论(0)