|
|
义隆USB接口UWTR编程器 |
▲ 操作方便,简洁实用。
▲ LCD显示编程状态。
▲ 一个集成所有编程操作的烧写系统。
▲ 可与任一电脑相连接使用或使用本身编程键操作。
▲ 文件保存为二进制格式(文件扩展名为.cds)。
▲ 提供多种通用功能:读,空片检查,校验,编程,保存,加密和自动编程。
▲ 可移动操作的友好操作界面。
▲ 操作过程中自动清除已编程器件的信息。
| |
MCS-51单片机的中断系统 |
深圳市凌雁电子有限公司 |
对初学者来说,中断这个概念比较抽象,其实单片机的处理系统与人的一般思维有着许多异曲同工之妙,我们举个很贴切的比方,在日常生活和工作中有很多类似的情况。假如你正在上班,例如是编译资料,这时侯电话铃响了,你在书本上做个记号(以记下你现在正编译到某某页),然后与对方通电话,而此时恰好有客人到访,你先停下通电话,与客人说几句话,叫客人稍侯,然后回头继续通完电话,再与客人谈话。谈话完毕,送走客人,继续你的资料编译工作。
这就是日常生活和工作中的中断现象,类似的情况还有很多,从编译资料到接电话是第一次中断,通电话的过程中引有客人到访,这是第二次中断,即在中断的过程中又出现第二次中断,这就是我们常说的中断嵌套。处理完第二个中断任务后,回头处理第一个中断,第一个中断完成后,再继续你原先的主要工作。
为什么会出现这样的中断呢?道理很简单,人非三头六臂,人只有一个脑袋,在一种特定的时间内,可能会面对着两、三甚至更多的任务。但一个人又不可能在同一时间去完成多样任务,因此你只能采分析任务的轻重缓急,采用中断的方法穿插去完成它们。那么这种情况对于单片机中的中央处理器也是如此,单片机中CPU只有一个,但在同一时间内可能会面临着处理很多任务的情况,如运行主程序、数据的输入和输出,定时/和计数时间已到要处理、可能还有一些外部的更重要的中断请求(如超温超压)要先处理。此时也得象人的思维一样停下某一样(或几样)工作先去完成一些紧急任务的中断方法。
这样的一样处理方法上升到计算机理论,就是一个资源面对多项任务的处理方式,由于资源有限,面对多项任务同时要处理时,就会出现资源竞争的现象。中断技术就是为了解决资源竞争的一个可行的方法,采用中断技术可使多项任务共享一个资源,所以有些文献也称中断技术是一种资源共享技术。 |
[1]. MCS-51的中断结构 |
|
计算机的中断系统能够加强CPU对多任务事件的处理能力。从而使它的应用范围进一步扩大。在MCS-48结构的基础上,MCS-51在增强了I/O的种类、功能和数量的同时,也增强了中断能力。MCS-51提供了5个中断源,两个中断优先级控制,可实现两个中断服务嵌套。当CPU支持中断屏蔽指令后,可将一部分或所有的中断关断,只有打开相应的中断控制位后,方可接收相应的中断请求。程序设置中断的允许或屏蔽,也可设置中断的优先级。
[2]. 中断处理流程
CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。
现场保护和现场恢复
中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。就象文章开头举的例子,在看书时,电话玲响需传去接电话时,必须在书本上做个记号,以便在接完电话后回来看书时,知道从哪些内容继续往下看。计算机的中断处理方法也如此,中断开始前需将个有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。
中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。
如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,程序跑飞,自然使单片机不能正常工作。
中断打开和中断关闭
在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。
中断服务程序
既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。
中断返回
执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。
[3]. MCS-51的中断源
8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。
在前一节,我们已对TCON的控制位进行了说明,现在继续对它的中断控制有关的位进行谈论。TCON寄存器的结构如下:
|
表1 TCON寄存器结构 |
TCON |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
位地址 |
8FH |
8EH |
8DH |
8CH |
8BH |
8AH |
89H |
88H |
· IE1: 外部边沿触发中断1请求标志,其功能和操作类似于TF0。
· IT1: 外部中断1类型控制位,通过软件设置或清楚,用于控制外中断的触发信号类型。IT1=1,边沿触发。IT=0是电平触发。
· IE0: 外部边沿触发中断0请求标志,其功能和操作类似于IE1。
· IT0: 外部中断0类型控制位,通过软件设置或清楚,用于控制外中断的触发信号类型。其功能和操作类似于IE1。
SCON是串行口控制寄存器,字节地址为98H,SCON的低二位是串行口的发送和接收中断标志,其格式如下:
|
表2 SCON寄存器结构 |
SCON |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
- |
- |
- |
- |
- |
- |
TI |
RI |
位地址 |
|
|
|
|
|
|
99H |
98H |
· TI: MCS-51串行口的发送中断标志,在串行口以方式0发送时,每当发送完8位数据,由硬件置位。如果以方式1、方式2或方式3发送时,在发送停止位的开始时TI被置1,TI=1表示串行发送器正向CPU发出中断请求,向串行口的数据缓冲器SBUF写入一个数据后就立即启动发送器继续发送。但是CPU响应中断请求后,转向执行中断服务程序时,并不清零TI,TI必须由用户的中断服务程序清“0”,即中断服务程序必须有“CLR TI”或“ANL SCON, #0FDH”等指令来清零TI。
· RI: 串行口接收中断标志.若串行口接收器允许接收,并以方式0工作,每当接收到8位数据时,RI被置1,若以方式1、2、3方式工作,当接收到半个停止位时,TI被置1,当串行口一方式2或3方式工作,且当SM2=1时,仅当接收到第9位数据RB8为1后,同时还要在接收到半个停止位时,RI被置1。RI为1表示串行口接收器正向CPU申请中断。同样RI标志栩栩如生由用户的软件清“0”。
|
|