微处理器结构与嵌入式系统设计第六讲_第1页
微处理器结构与嵌入式系统设计第六讲_第2页
微处理器结构与嵌入式系统设计第六讲_第3页
微处理器结构与嵌入式系统设计第六讲_第4页
微处理器结构与嵌入式系统设计第六讲_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微处理器结构与嵌入式系统设计第六讲 单片机的中断系统中断的比喻任何一件事情的发生都会中断小林看电视的进程而去响应和处理事件。例如,邮递员上门送信,小林必须去开门签收信件,当事件处理完后,小林回去接着看电视。这里,小林比喻的就是单片机,而5个可能发生的事件为单片机的5个中断源外部中断0、外部中断1、Timer 0中断、Timer 1中断、串行通信中断。外部中断1例两支发光二极管D1(绿色)和D2(红色)与单片机的P0.0和P0.1相连,在外部中断1(P3.3(/INT1 ),13管脚)上有一个按钮开关S1。按下按钮开关S1可以模拟外部中断信号的发生:当开关S闭合时,P3.3=0,外部中断1产生。

2、“MAIN” 段的 “MOV IE, #84H”设置中断使能寄存器IE,使单片机可以响应P3.3的外部中断1。“GREEN” 段将P0.0口上的绿色发光二极管D1点亮。D1的来说是一个死循环。只有当中断持续发光对于主程序发生时按下开关S1,P3.3=0,外部中断1产生,单片机放下正在执行的循环而进入中断服务子程序中执行程序。从标号“EXT1_RED”到指令“RETI”之间的程序是中断服务子程序段,子程序段将熄灭绿色发光二极管D1,并点亮红色发光二极管D2,延时100ms后熄灭。中断服务子程序以“RETI”为结束的标志,中断服务子程序结束。单片机又回到主程序执行,绿色发光二极管D1又被点亮。 中

3、断服务的指挥中断向量表当外部中断1发生时,单片机怎么知道要去“EXT1_RED”段去执行呢?这都是指令“ORG13H”的功劳,该指令重新设置了一个新的地址13H,这就使得中断服务子程序段“EXT1_RED”从13H开始存储在程序存储器中。当指令“MOV IE, #84H”使能外部中断1后,一旦外部中断1发生,单片机会自动到程序存储器的地址13H上去执行程序。换句话说,外部中断1发生时,程序计数器PC被硬件修改成0013H,而PC指向的地址正是单片机取下一条指令的地址,于是单片机会从13H开始执行中断服务子程序段“EXT1_RED”直到遇到指令“RETI”为止。 中断服务程序的C语言 实现 #i

4、nclude #define uchar unsigned char#define uint unsigned int sbit led0=P00; sbit led1=P01;void main() EA=1; EX1=1; while(1) led0 = 0; void ext1_read() interrupt 2 led0 = 1; led1 = 0; delay(100); led1 =1; void delay(uint ms) uint i, j; for(i=ms;i0;i- -) for(j=110;j0;j- -); AT89S51单片机有5个中断源:外部中断0(/INT0

5、 )、外部中断1( /INT1)、Timer 0中断(TF0)、Timer 1中断(TF1)、串行通信中断(RI/TI)。当中断使能后,任何一个中断发生时单片机都会到表14-1所示的对应地址上去执行中断服务子程序。中断的控制及处理 中断的响应及处理AT89S51单片机的中断源有5种,也就是说有5种方式使单片机产生中断。当一个中断产生时,单片机会按以下的步骤进行响应与处理。立即暂停当前正在执行的任何指令,并把下一条将要执行的指令地址压入堆栈中。根据中断的类型在中断向量表中找到对应的地址。到该地址上开始执行中断服务子程序,直到遇到指令“RETI”,中断服务子程序结束。执行完中断服务子程序后,从堆栈

6、中弹出在中断产生时保存的将要执行的下一条指令的地址到程序计数器PC中,单片机开始从PC指示的地址继续执行程序。 中断的响应及处理一个潜在的问题:每一个中断服务子程序的存放空间都非常有限,例如,外部中断0的中断向量为0003H,而Timer 0中断向量地址为000BH,可见外部中断0的中断服务子程序只有000BH-0003H=8个字节的空间来存放,这8个字节的空间实在也放不了几条指令。解决这个问题:可以把指令“ORG”与跳转指令“JMP”结合来实现中断服务子程序的跳转,从而在另一个更为广阔的的空间中来放置中断服务子程序。 中断使能寄存器单片机上电复位之后,默认所有中断都被屏蔽(关闭),这意味着即

7、使任何一种中断产生,单片机也不会去响应。为了使单片机能对中断进行响应,或者说使能中断,需要对中断使能寄存器IE进行操作。中断使能寄存器IE是一个特殊功能寄存器,位于特殊功能寄存器区的地址A8H上(图7-25)。中断使能寄存器IE的操作:IE的位7是EA,是所有中断的“总开关”。只有EA=1时,中断才会开放,这时IE中的其他位将使能或屏蔽某一个中断。如果EA=0,所有中断都不会被响应(全被屏蔽)。如果EA=1时,相应的中断由IE中相应的位来控制。控制位置1使能中断;清0则屏蔽中断。外部中断0和外部中断1 外部中断信号输入端/INT0和 /INT1AT89S51单片机的/INT0端(12管脚)和/

8、INT1端(13管脚)是外部中断信号进入单片机的通道。P3.2和P3.3即是一般I/O口,又分别是外部中断0和外部中断1的中断信号输入端。通常我们使用/INTx代表任意一个外部中断。外部中断0和外部中断1的中断服务子程序入口地址,即中断向量分别为0003H和0013H。这两个外部中断分别由中断使能寄存器IE中的EX0和EX1位来使能或屏蔽。外部的脉冲信号或按钮开关S1都可以作为中断信号输入到/INTx端使单片机产生中断。外部中断的低电平触发使单片机产生外部中断的信号有两种方式,一是低电平触发,二是下降沿触发。当单片机上电复位后,使能外部中断时就默认以低电平方式触发。在低电平触发模式下,外部中断

9、信号输入端/INT0和/INT1出现低电平就会触发外部中断0或外部中断1。外部中断产生时,单片机会立即停止正在执行的指令,并根据中断向量表中的中断向量转入相应的地址执行外部中断服务子程序。在单片机进入中断服务子程序执行并在中断结束指令“RETI”之前,这个低电平必须撤走,否则将会使单片机执行完指令“RETI”后因 /INT0或/INT1仍为低电平而再次进入中断服务子程序。 外部中断的下降沿触发除了低电平触发外,边沿触发也是一种常用的触发外部中断的模式。在该模式下,/INT0端或/INT1端出现下降沿即可使单片机产生中断。与低电平触发不同,下降沿触发方式不是单片机默认的中断触发方式,所以需要指令

10、来设置单片机工作在该模式下。方法是通过Timer控制寄存器TCON中的IT0位和IT1位来分别控制/INT0和/INT1触发方式。Timer 0中断和Timer 1中断 Timer和Timer中断Timer是单片机中一个很有用的功能结构,Timer可设置作为定时器或计数器。在使用Timer时,先向Timer寄存器中装载一个计数初始值,通过指令“SETB TRx”来启动Timer,并用类似“JNB TFx, $”的指令来不断检测Timer溢出标志位TFx来判断计数是否完成。在Timer计数期间,单片机除了循环执行指令“JNBTFx, $”对标志位TFx进行判断之外一般不做其他操作。如果在Time

11、r计数的同时我们还需要单片机执行其他操作该怎么办呢?使用Timer中断就可以解决这个实际问题。Timer中断作为AT89S51单片机的中断源之一,会在Timer计数结束时向CPU产生中断,这样就不需要程序中使用循环指令“JNBTFx, $”对标志位TFx进行判断了,而是让Timer到一边自己计数,当计数完成通过中断来告诉程序计数结束。这样一来,在Timer计数过程中,单片机就可以腾出空执行其他指令,等Timer中断产生时再服务即可。 利用Timer中断作信号发生器轮询与中断轮询:主程序由“MAIN1”、“MAIN2”、“MAIN3”、“MAIN4”等组成,在主程序执行过程中单片机还需要关注按钮

12、开关是否按下、Timer是否计数完成、串行数据是否接收/发送完成等事件。为了确保这些事件的发生不会被遗漏,单片机需要依次对它们进行循环查询,如果事件发生就要执行相应的服务程序。服务程序执行完成,单片机会继续查询下一个事件是否发生。中断:单片机可以“专心地”执行主程序,并不会主动去查询按钮开关、Timer、串行数据收/发等事件的发生,而只是等待事件产生中断时再去处理。这种做法显然使单片机解放出来,获得更大的执行效率。除了使单片机提高执行效率之外,中断还有两个优点:中断下,单片机可以选择特定的中断进行响应和处理。通过中断使能寄存器IE相应的位来使能某个或某些中断,屏蔽那些不需要响应和处理的中断。而

13、轮询下,单片机必须响应和处理每一个设备。中断下,如果有多个中断同时发生,单片机可以根据程序的设定来优先响应和处理某一中断。而轮询下,单片机逐一对设备进行访问,有需要服务的就服务,没有优先顺序之分。 中断优先级例如,Timer 0中断和外部中断1如果同时产生,单片机会先去响应Timer 0中断并处理它的中断服务子程序。完成之后再响应外部中断1,进入相应的中断服务子程序。如果有两个或两个以上的中断同时产生,单片机该先服务方便呢?AT89S51单片机有一个默认的中断优先级,外部中断0的中断优先级最高,串行通信中断优先级最低,其他中断的优先级依次按表中排列依次降低。如果想改变中断优先级顺序,可通过对中

14、断优先级控制寄存器IP设置来完成。寄存器IP位于特殊功能寄存器区的地址B8H上(图 7-25),是专门用于设置单片机中断优先级的寄存器。如果想改变中断优先级顺序,可通过对中断优先级控制寄存器IP设置来完成。寄存器IP位于特殊功能寄存器区的地址B8H上,是专门用于设置单片机中断优先级的寄存器。在单片机上电复位时,中断优先级控制寄存器IP=XXX0 0000,即所有中断优先控制位均为0。如果想优先响应某个中断,把IP中相应的位置1即可。例如,希望串行通信中断具有最高的服务优先级,可将IP寄存器中的PS位置1,指令为“MOV IP, #0001 0000B”或“SETBIP.4”。液晶屏 液晶屏的应

15、用液晶屏的低功耗、显示信息丰富等特点使其在电子产品中广泛使用。在90%以上的场合中,液晶屏都是以单片机等为核心的嵌入式系统的显示外设,所以它近年来的普及与单片机的快速发展密不可分。 字符液晶屏字符液晶屏:图示为一款162的字符液晶屏。162表示该液晶屏每行最多显示16个字符,且能显示2行。显示的字符可以是英文大、小写字母、数字、标点符号、常用符号等。如图中显示区域中的内容“Active Robots”和“Supply = 4.97V”就包括了字母、数字、符号等信息。 字符液晶显示原理液晶屏的显示控制方法与七段数码管有本质的不同,液晶屏中由一个个点阵块显示。204字符液晶屏每行可显示20个字符,

16、最多显示4行。而每个字符的显示都由点阵块实现,所以204字符液晶屏有80个点阵块。 单片机与字符液晶屏的接口液晶屏的显示全靠单片机对其管脚的控制实现。 单片机与字符液晶屏的接口Vcc、Vss(1、2管脚)电源端。液晶屏的+5V工作电压与单片机相同。Vee(3管脚)液晶屏驱动电源。该管脚的电平决定了液晶屏的对比度,通常可用一个分压器控制Vee管脚的电压从而调整对比度。E(6管脚)使能端。该管脚控制液晶屏从数据总线DB0DB7上将数据读入液晶屏。当该管脚上的电平由1向0变化时,数据总线DB0DB7的数据被读入液晶屏。DB0DB7(714管脚)数据总线。这8位数据总线是数据交换的通道,单片机向液晶屏

17、送入的命令或数据都通过这8位数据总线进行。+LED、-LED(15、16管脚)液晶屏背光供电端。这两个管脚是液晶屏背光供电端,正常工作的电流约在190mA左右。 字符液晶屏的控制程序单片机需要先向液晶屏输出一些显示设置命令,然后再输出显示数据。当单片机向液晶屏输出显示设置命令时,RS管脚应该清0。当设置完成后,需要使RS管脚置1以向液晶屏输入显示数据。同时,R/W管脚也接低电平,液晶屏接受数据从DB0DB7写入。当RS管脚和R/W管脚设置妥当后,执行对E管脚清0,就会在E管脚上形成一个由高向低的跳变,这个跳变就使得命令或显示数据从数据总线DB0DB7进入液晶屏。 字符液晶屏的控制程序液晶屏显示

18、“Hello, world!”的程序:开始部分使用伪指令“BIT”将RS、RW、E 这3个变量分别指向单片机的3个I/O口,这3个I/O口控制着液晶屏的相应管脚。这样,后面的程序对变量RS、RW、E的操作就相当于对液晶屏的RS、R/W、E的操作。在“START”段中,命令对液晶屏进行显示前的设置,这些设置包括以下几个步骤:01H清屏38H设定显示2行内容0FH打开显示,打开光标,光标闪烁06H光标右移80H光标来到液晶屏第1行的开头C0H光标来到液晶屏第2行的开头当设置完成后,指令“MOV DPTR, #TABLE_1”进行装表,调用“DISPLAY”子程序把数据表中数据装入累加器A中,随后再调用“SEND_DATA”子程序把显示数据从P1口输出,由于在“SEND_DATA”中设置RS=1,所以液晶屏会把P1口的数据作为显示数据来显示。显示数据“Hello,”和“world!”分别保存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论