T0作为外部中断使用的方法

T0作为外部中断使用的方法

—————————————————————————— 第十三课ATMEAG16L的外部中断编程实践 本教程节选自周兴华老师《手把手教你学AVR单片机C程序设计》教程,如需转载,请注明出处!读者可通过当当网、淘宝网等网站购买本教程,如需购买配书 实验器材,可登陆周兴华单片机培训中心网购部自助购买! Atmega16L具有多达20个中断源,这里我们进行外部中断的实验,其它的等到介绍到相关内容时可进行适当的实验。 1.外部中断0 外部中断0由引脚INT0(PIND2)触发。如果INT0引脚按照MCUCR寄存器中的ISC01、ISC00设置的方式发生跳变,则不管是否lNT0中断使能,INT0中断标志位INTF0都将置位。如果SREG 寄存 器的全局中断位I和通用中断控制寄存器GICR中的INT0中断使能位INT0置位,则单片机培训开始 执行中断程序。在进入中断服务程序时,INTF0被硬件清零。必须指出,不管INT0(PIND2)引脚 方向位设置如何,只要INT0引脚发生规定的跳变,都会触发中断。中断标志位INTF0只在满足发生 中断的条件时置位,一旦条件变化,INTF0被硬件清零。向INTF0位写“1”也会对其清零。 2.外部中断1 外部中断0由引脚INT1(PIND3)触发。如果INT1引脚按照MCUCR寄存器中的ISC11、ISC10设置的方式发生跳变,则不管是否lNT1中断使能,INT1中断标志位INTF1都将置位。如果SREG 寄存 器的全局中断位I和通用中断控制寄存器GICR中的INT1中断使能位INT1置位,则开始执行中断程 序。在进入中断服务程序时,INTF1被硬件清零。必须指出,不管INT1(PIND3)引脚方向位设置 如何,只要INT1引脚发生规定的跳变,FPGA培训都会触发中断。中断标志位INTF1只在满足发生 中断的条件时置位,一旦条件变化,INTF1被硬件清零。向INTF1位写“1”也会对其清零。 3.外部中断2 外部中断2由引脚INT2(PINB2)触发。如果INT2引脚按照MCUCR寄存器中的ISC2设置的方式发生跳变,则不管是否lNT2中断使能,INT2中断标志位INTF2都将置位。如果SREG 寄存器的全局 中断位I和通用中断控制寄存器GICR中的INT2中断使能位INT2置位,则开始执行中断程序。在进 入中断服务程序时,INTF2被硬件清零。必须指出,不管INT2(PINB2)引脚方向位设置如何,只 要INT2引脚发生规定的跳变,都会触发中断。中断标志位INTF2只在满足发生中断的条件时置位, 一旦条件变化,INTF2被硬件清零。向INTF1位写“1”也会对其清零。 8.2.1 INT1中断实验

51单片机扩展中断的四种方法 MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时 ,就必须进行扩展,下面介绍两种简单的扩展方法: 一、采用硬件请求和软件查询的方法: 这种方法是:把各个中断源通过硬件“或非(高有效,如CD4002)”(与,低有效)门引入到单片机外部中断源输端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这 样当外部中断时,通过“或非”(与)门引起单片机中断,在中断服务程序中再通 过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于 软件查询的次序。其硬件连接和软件编程如下: Void zhongduan (void) interrupt 0 using 3 //中断函数 { EX0=0;//关中断 If(P0_0=1) { *****}//中断查询 If(P0_1=1) { *****}//中断查询 If(P0_2=1) { *****}//中断查询 EX0=1;开中断 } 二、用普通二极管构成中断选择

扩展的8个外部中断源均通过二极管向I N T(x=0或I)请求中断。当某个外部中断源请求中断服务时输出低电平电平,单片机满足响应外部中断(I N T)请求条件,响应中断,程序立即转向I NT 对应的中断入口地址处开始执PI.0~P1.7口外中断源的状态,以识别提出请求的外扩中断源,并转向中断服务程序为其服务,其查询顺序即顺序。在图中,是选用PI.0~PI.7作为外扩中断源请求的状态信息输入端口。 有点类似第一种方法。 三、用定时器/计数器作外部中断 单片机的定时器/计数器是一个加一计数器,每当计数输入端有一个“1—0”的负 跳变时,计数器加一,当加一计数器溢出时,就向CPU发出中断,利用这个特性 来扩展中断的方法是:首先把定时器/计数器设置成计数方式,并预置满值,把 外部中断源输入到P3口第4引脚或第5引脚(计数器输入端),这样就可以利用 定时器/计数器作为单片机外部中断了。注意这种方法的中断服务的入口地址应 在000BH或001BH。 四、用专用中断扩展芯片8259A 8259A是可编程中断控制接口,单片机控制八级中断。在系统中还可采用级联方式,一个主片可级联8个从片,这样在程序小于8K的情况,就可以用一片单片机实现了,而不需要用两片单片机控制,还要进行单片机点对点

1 外部中断实验 一、实验目的 1掌握外部中断技术的基本使用方法 2掌握中断处理程序的编写方法 二、实验说明 1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.1)引入,本实验由INT0(P3.2)引入。 2、中断服务的关键: a 、保护进入中断时的状态。 堆栈有保护断点和保护现场的功能使用PUSH 指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。 b 、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。 c 、用POP 指令恢复中断时的现场。 3、中断控制原理: 中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP 。 4、中断响应的过程: 首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。所谓查询就是由CPU 测试TCON 和SCON 中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。 INT0端接单次脉冲发生器。P1.0接LED 灯,以查看信号反转。 三、实验内容及步骤 1、使用单片机最小应用系统1模块,P1.0接发光二极管,INTO 接单次脉冲输出端。 2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源。 3、启动计算机,打开Keil 仿真软件,进入仿真环境。选择仿真器型号、仿真头型号、CPU 类型。 4、打开 中断.ASM 源程序,编译无误后,全速运行程序,连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。 5、可把源程序编译成可执行文件,烧录到89C51芯片中。 四、流程图及源程序 1、流程图 保护现场 设置初始状态 设置中断控制寄存器 开始 中断入口

第五章习题答案 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-5 MCS-51有哪几种扩展外部中断源的方法?各有什么特点? 扩展外部中断源的方法有定时扩展法和中断加查询扩展法两种。定时扩展法用于外部 中断源个数不太多并且定时器有空余的场合。中断加查询扩展法用于外部中断源个数较多的 场合,但因查询时间较长,在实时控制中要注意能否满足实时控制要求。 5-6 MCS-51单片机各中断源发出的中断请求信号,标记那些寄存器中? 外部中断0(INT0)和外部中断1(INT1)中断请求信号标记在TCON中IE1和IE0。 T0和T1中断中断请求信号标记在TCON中TF1和TF0 串行口中断类中断请求信号标记在SCON中TI和RI 5-7 编写出外部中断1为跳沿触发的中断初始化程序。 SETB EA SETB EX1 SETB IT1

大学实验报告 学生:学号:专业班级: 实验类型:?验证?综合■设计?创新实验日期:2018.05.29 实验成绩: 实验四外中断实验 (一)实验目的 1.掌握单片机外部中断原理; 2.掌握数码管动态显示原理。 (二)设计要求 1.使用外部中断0和外部中断1; 2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。 (三)实验原理 1.中断 所谓中断是指程序执行过程中,允许外部或部时间通过硬件打断程序的执行,使其转向为处理外部或部事件的中断服务程序中去,完成中断服务程序后,CPU返回继续执行被打断的程序。如下图所示,一个完整的中断过程包括四个步骤:中断请求、中断响应、中断服务与中断返回。 当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。中断服务请求处理完后,再回到原来被中止的程序之处(断电),继续执行被中断的主程序。 如果单片机没有终端系统,单片机的大量时间可能会浪费在是否有服务请求发生的查询操作上,即不论是否有服务请求发生,都必须去查询。因此,采用中断技术大大地提高了单片机的工作效率和实时性。

2.IAP15W4K58S4单片机的中断请求 IAP15W4K58S4单片机的中断系统有21个中断请求源,2个优先级,可实现二级中断服务嵌套。由IE、IE2、INT_CLKO等特殊功能寄存器控制CPU是否相应中断请求;由中断优先级高存器IP、IP2安排各中断源的优先级;同优先级2个以中断同时提出中断请求时,由部的查询逻辑确定其响应次序。 中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下: (1)外部中断0(INT0):中断请求信号由P3.2引脚输入。通过IT0来设置中断请求的触发方式。当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0。一旦输入信号有效,则置位IE0标志,向CPU申请中断。 (2)外部中断1(INT1):中断请求信号由P3.3引脚输入。通过IT1来设置中断请求的触发方式。当IT1为“1”时,外部中断1为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断1。一旦输入信号有效,则置位E1标志,向CPU申请中断。 中断源是否有中断请求,是由中断请求标志来表示的。在IAP15W4K58S4单片机中,外部中断 0、外部中断1等请求源的中断请求标志分别由特殊功能寄存器TCON和SCON控制,格式如下: (1)TCON寄存器中的中断请求标志。TCON为定时器T0与T1的控制寄存器,同时也锁存T0和T1的溢出中断请求标志及外部中断0和外部中断1的中断请求标志等。格式如下图所示: D7 D6 D5 D4 D3 D2 D1 D0 88H 与中断有关的各标志位功能如下: ①TF1:T1的溢出中断请求标志。T1被启动计数后,从初值做加1计数,计满溢出后由硬件 置位TFI,同时向CPU发出中断请求,此标志一直保持到CPU 响应中断后才由硬件自动清0。 也可由软件查询该标志,并由软件清0。 ②TF0:T0的溢出中断请求标志。T0被启动计数后,从初值做加1计数,计满溢出后由硬件 置位TF0,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清 0。也可由软件查询该标志,并由软件清0。 ③IE1:外部中断1的中断请求标志。当INT1(P3.3)引脚的输入信号满足中断触发要求时,置 位IE1,外部中断1向CPU申请中断。中断响应后中断请求标志自动清0。 ④IT1:外部中断1(INT1)中断触发方式控制位。当(IT1)=1时,外部中断1为下降沿触发方式。 在这种方式下,若CPU检测到INT1出现下降沿信号,则认为有中断申请,随即使IE1标志 置位。中断响应后中断请求标志会自动清0,无须做其他处理。当(T1)=0时,外部中断1为

ATMega16单片机外部中断的使用[日期:2010-09-24 ] [来源:本站原创作者:佚名] [字体:大中小] (投递新闻) // Crystal: 7.3728Mhz ,功能:学习外部中断0的程序 #include #include #define LED_COM PORTA ^= (1 << PA6) // void port_init(void) { PORTA = 0x40; DDRA = 0x40; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x04; DDRD = 0x00; } #pragma interrupt_handler int0_isr:2 void int0_isr(void)

LED_COM; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GICR = 0x40; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void main() { init_devices(); while(1)

A Of all systems of symbols,language is the most highly developed. It has been pointed out that human beings,by agreement,can make anything stand for anything. Human beings have agreed,in the course of centuries of mutual (相互的)dependency,to let the various noises that they can produce with their lungs,throats,tongues,teeth,and lips systematically stand for certain happenings in their nervous system. We call that system of agreements language. There is no necessary connection between the symbol and that which it stands for. Just as social positions can be symbolized by feathers worn on the head,by gold on the watch chain,or by a thousand other things according to the culture we live in,so the fact of being hungry can be symbolized by a thousand different noises according to the culture we live in. However obvious these facts may appear at first glance,they are actually not so obvious as they seem except when we take special pains to think about the subject. Symbols and the things they stand for are independent of each other,yet we all have a way of feeling as if,and sometimes acting as if,there were necessary connections. For example,there are people who feel that foreign languages are unreasonable by nature:foreigners have such funny

单片机外部中断实验(附c程序) 一、实验目的 掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。 。 二、实验内容 8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能: (1)合上、P3.3断开时LED1闪烁 (2)P3.2断开、P3.3合上时LED2闪烁 (3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁 (4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁 试编写C语言和汇编语言程序 使用自然优先级就可以 也可 XO 高级X1低级PX0=1 PX1=0 四、实验电路 五、参考程序(自己完成) C程序: Include Sbit P2_0=P2^0; Sbit P2_1=P2^1; Sbit P3_2=P3^2; Sbit P3_3=P3^3; void delay02s(void) //延时0.2秒子程序 { unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); }

Void main { EA=1; EX0=1; EX1=1; ITO=1; IT1=1; PX0=1; PX1=0; While(1); } Void int0(void) interrupt 0 { if(!P3_2) { While(1) { P2_0=1; delay02s(); P2_0=0; delay02s(); } } } Void int1(void) interrupt 2 { if(!P3_3) { While(1) { P2_1=1; delay02s(); P2_1=0; delay02s(); } } }

一、 实验要求 在单片机的外中断输入引脚INT0————(或INT1———— ),接一个按键开 关来产生外部中断请求,通过P1口连接的8个LED 发光二极管的状态,来反映外中断的作用。 中断未发生时,P1口连接的8个LED 为流水状态,当按键 开关按下,即外部中断请求产生时,8个LED 呈现闪烁状态。按键开关松开,8个LED 又为流水状态。 二、 实验目的 (1) 理解掌握外部中断源、中断请求、中断标志、中断入口 等概念。 (2) 掌握中断程序的设计方法。 程序如下: ORG 0000H //程序入口 LJMP MAIN //跳入主程序入口MAIN ORG 0003H //INT0中断入口 LJMP INT0P ORG 0030H MAIN: SETB EA //中断允许总开关控制位 SETB EX0 //允许外部中断0中断 SETB PX0 //外部中断0中断为高优先级 START:MOV R2,#8 MOV A,#0FEH //为点亮引脚发光二极管需写入P1口的点亮控制码 LOOP: MOV P1,A //点亮控制码写入P1口,点亮相应的LED

LCALL DELAY //调用延时子程序 RL A //点亮控制码循环左移,点亮下一位 DJNZ R2,LOOP //判断左移是否超过8位,未超过继续循环 LJMP START //左移循环已8次,再重新进行下一次循环点亮 INT0P: PUSH PSW //保护现场 PUSH Acc NOLIG: JNB IE0,IT0R MOV P1,#00H LCALL DELAY MOV P1,#0FFH LCALL DELAY LJMP NOLIG IT0R:RETI DELAY: MOV R5,#60 //延时子函数 D1: MOV R6,#20 D2: MOV R7,#248 D3: DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 程序如图:

单片机外部中断线的作用 这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。 接下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,即当软件中断/事件寄存器的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。 一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。 外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器的一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。从这张图上我们也可以知道,从外部激励信号来看,中断和事件的产生源都可以是一样的。之所以分成2个部分,由于中断是需要CPU参与的,需要软件的中断服务函数才能完成中断后产生的结果;但是事件,是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件产生的结果,当然相应的联动部件需要先设置好,比如引起DMA操作,AD转换等;

51单片机一般有两个外部中断输入端,并允许外部中断源以低电平或负边沿两种触发方式输入中断请求信号。本例就是利用一只按钮,在按下时产生的负边沿触发外部中断。 1 硬件设计 将一只按钮接在外部中断输入0(12脚),八支发光二极管分别接在P0.0~P0.7,其电路如下图所示。 ⒉软件设计 通过按下按钮SW触发外部中断,从而改变发光二极管D1~D8的亮、灭,当第一次按下按钮时,只有D1发光二极管亮;第二次按下按钮时,只有D2发光二极管亮;第三次按下按钮时,只有D3发光二极管亮;……第八次按下按钮时,只有D8发光二极管亮;第九次按下按钮时,D1~D8发光二极管全亮;第十次按下按钮时,D1~D8发光二极管全都不亮;第十一次按下按钮时,只有D1发光二极管亮; 按钮SW触发外部中断,从而控制D1~D8亮灭的详细C51程序如下。 /***************外部中断****************/ #include unsigned char count=0; //外部中断计数 unsigned char F0=0; main(){ F0=0;

IE=0X81;//打开外部中断0和总中断使能或者(EX0=1;EA=1) IT0=1; //标志位清零,开中断 ,边沿激活(或者TCON|=0X01) while(1) { while(F0==0); switch(count%10){ case(0): P0=0XFF;break; case(1): P0=0XFE;break; case(2): P0=0XFD;break; case(3): P0=0XFB;break; case(4): P0=0XF7;break; case(5): P0=0XEF;break; case(6): P0=0XDF;break; case(7): P0=0XBF;break;case(8): P0=0X7F;break; case(9): P0=0X00;break; } F0=0; } } void int_int0() interrupt 0 //外部中断 { count++;F0=1; }

(仿真部分) 一、实验目的 1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验内容 在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。P1.0~ P1.3接LED灯,以显示计数信号。 三、实验说明 编写中断处理程序需要注意的问题是: 1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。 3.INT0和INT1分别接单次脉冲发生器。P1.0~ P1.3接LED灯,以查看计数信号. 四、硬件设计 利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。设计出如下的硬件电路。晶振频率为12MHz。 五、参考程序框图 中断处理程序框图

(实验箱部分) 1.实验目的 认识中断的基本概念 学会外部中断的基本用法 学会asm和C51的中断编程方法 2.实验原理 图按键中断 【硬件接法】 P1.1控制LED,低电平点亮 P3.3/INT1接按键,按下时产生低电平 【运行效果】 程序工作于中断方式,按下按键K2后,LED点亮,1.5秒后自动熄灭。 8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。/INT0和/INT1中断的入口地址分别是0003H和0013H。 TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。 如果外部的中断请求信号产生后可能长时间后才能撤销,则为了避免在中断服务程序里长时间无谓等待,可以选择下降沿触发。下降沿触发是“一次性”的,每次中断只会有1个下降沿,因此中断处理程序执行完后可以立即返回主程序,而不必等待中断请求信号恢复为高电平,这是一个重要的技巧。 3. 实验步骤 ●参考实验例程,自己动手建立Keil C51工程。注意选择CPU类型。Philips半导体的P89V51RB2。 ●编辑源程序,编译生成HEX文件。 ●ISP下载开关扳到“00”,用Flash Magic软件下载程序HEX文件到MCU BANK1,运行。 运行Flash Magic软件。各步骤操作如下: Step 1: COM Port:选择实际使用的串行口,通常为COM1; Baud Rate:波特率不可设置得过高,推荐用9600; Device:请选择正确的型号89V51RB2; Interface:选择None(ISP)。 Step 2:请勾中“Erase blocks used by Hex File”。

单片机课程设计报告 设计题目:外部中断控制流水灯变化 姓名

一.设计目的 通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3口的俩管脚P3.2和P3.3第二功能,即外部中断来使CPU响应,达到控制流水灯的目的。 二.设计要求 主程序实现8个灯从P2.0到P2.7依次亮灭,灯与灯 之间间歇约0.5秒.当P3.3口是低电平时,灯从P2.7到P2.0依次亮灭,灯与灯之之间间歇约0.5秒.循环3次返回主程序.当P3.2口是低电平时,灯全灭,当P3.2口是高电平时,返回主程序.当同时使P3.2和P3.3为低电平时,灯全灭,因为外部中断0的优先级高于外部中断1的优先级. 三.MCS-51的硬件结构: 四.P3口的状态 P3口是双功能口,默认为第一功能(通用I/O口),通过编程可设置第二功能。

五.中断传送方式: 中断方式则是在外设为数据传送做好准备之后,就向CPU发出中断请求信号(相当于通知CPU)。CPU接收到中断请求信号之后立即作 出响应,暂停正在执行的原程序(主程序),而转去外设的数据输入输 出服务,待服务完之后,程序返回。CPU再继续执行被中断的原程序。六.外部中断 外部中断是指从单片机外部引脚输入请求信号。输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为 外部中断源,从引脚INT0、INT1输入。 外部中断请求、有两种触发方式:电平触发及跳变(边沿)触发。 这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。七.电路原理逻辑图如下:

P3.3 P3.2 灯亮情况 0 0 全灭 0 1 全灭 1 0 从P2.0到P2.7依次亮灭 1 1 从P2.7到P2.0依次亮灭八.实验硬件电路图如下

单片机练习三中断与接口 一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为( A )。 A. 375K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为( B )。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是( D )。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是(D )。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位(D )。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择( C )。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为( B )。 A.001BH B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为( C )。 DY2:MOV R6,#2 DLP1:MOV R7,#250 DLP2:DJNZ R7,DLP2 DJNZ R6,DLP1 RET A.1ms B. 1.5ms C. 2ms D. 4ms 9. 串行口中断入口地址是( D )。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是 ( A )。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ 11. MCS-51串行口工作于方式2时,传送的一帧信息为( C )。 A. 8位 B. 16位 C. 11位 D. 12位 12. MCS-51单片机有( B )内部中断源。 A. 2个 B. 3个 C. 4个 D. 5个 13. T1作为计数器,工作于方式2,不需门控位参于控制,其控制字为(A,C )。 A. 60H B. 06H C. 66H D. 00H 14. 已知(60H)=23H,(61H)=61H,运行下列程序62H内容为( A )。 CLR C MOV A,#9AH SUBB A,60H ADD A,61H DA A MOV 62H,A A. 38H B. D8H C. DBH D. 3EH 15. 设系统的晶振频率为6MHZ,下列子程序DELAY的延时时间约为( B )。 DELAY:MOV R2,#0FAH L2:DJNZ R2,L2 RET A. 900μS B. 1006μS C. 500us D. 5.501us 16. MCS-51中,CPU正在处理定时器/计数器T1中断,若有同一优先级的外部中断INT0又提出中断请求,则CPU ( B )。

实验二外部中断实验 一.实验目的 1.学习外部中断技术的基本使用方法; 2.学习中断处理程序的编程方法。 二.实验设备及器材配置 1.单片机仿真实验系统。 2.计算机。 3.导线。 三.实验内容 在以下实验题目中任选一个或由老师指定。 1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。以单脉冲输出端做为中断申请,当第一次产生外部中断时,使发光二极管全亮,延时1秒后返回中断之前的状态;当第二次产生外部中断时,使发光二极管全灭,延时1秒后返回中断之前的状态;以后如上述一直循环下去。 2.以单脉冲输出端做为中断申请,自行设计连线,用实验箱上的红、绿、黄发光二极管模拟交通灯控制。当有急救车通过时,两交通灯信号为全红,以便让急救车通过,延时10秒后交通灯恢复中断前状态。 四.实验原理说明 本实验中中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能返回中断前P1口及发光二极管的状态。除了保护累加器A、程序状态字PSW外、P1口的状态外,还要注意主程序中的延时程序和中断程序的延时程序不能混用,本实验中,主程序延时程序用的寄存器和中断延时用的寄存器也不能混用。 五.连线方法及实验电路 8031的P1.0—P1.7分别接发光二极管L0—L7,P3.2接单脉冲输出端“ ” 外部中断实验电路如图1-3所示。

图1-3 外部中断实验电路 六.思考题及实验报告要求 1.思考题 (1).试说明51系列单片机外部中断如何使用。 (2).修改程序,外部中断产生时,使发光二极管闪亮移位方向改变。 2.实验报告要求 (1).给出自行设计的程序清单、程序流程图。 (2). 总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。 VW集成调试软件使用 1.自建以字母开头的文件夹,推荐在F盘。 2.双击桌面V/W快捷方式 3.左击【文件】-新建文件-保存文件(存于自建文件夹下,以字母开头,后缀为.ASM或.C) 4.左击【文件】-新建项目-(以字母开头,存于自建文件夹下,加入自存的汇编或C源程序) 5.编写程序 6. 左击【项目】-编译,根据提示将提示的错误位置修改,编译,直至程序无错。 7.实验箱断电、连线完毕后,打开实验箱电源开关。左击【仿真器】,在出现的窗口中选择LAB8000\MCS51\8031AH或A T89C51,晶体频率:6000000Hz。 8. 左击【执行】-全速运行,在实验箱上观察运行结果。

哈尔滨理工大学荣成学院 单片机原理及应用Protues 仿真实验 班级: 学号: 姓名: 日期:

实验三单片机外部中断的使用 一、实验名称:单片机外部中断的使用 二、实验目的 1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4..实现Proteus与Keil联调软件仿真。 三、使用仪器设备编号、部件及备件 1.实验室电脑; 2.单片机实验箱。 四、实验过程及数据、现象记录 在Proteus 环境下建立如下仿真原理图,并保存为文件;

原理图中常用库元件的名称: 无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51 晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON 发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW 在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件;汇编语言参考程序如下:ORG 0000H

LJMP MAIN ORG H ;外部中断0程序入口地址LJMP EXINT0 ORG 0030H MAIN: MOV SP,#60H ;堆栈指针初始化 SETB ;设置外部中断 0 为边沿触发 SETB ;开外部中断0 SETB ;开CPU总中断MOV A,#01H LOOP: MOV P1,A RL A CALL DELAY SJMP LOOP DELAY: MOV R1,# ;延时250ms子程序DL1: MOV R2,# DL2: MOV R3,# DJNZ R3,$ DJNZ R2,DL2 DJNZ R1,DL1 ;延时子程序返回EXINT0: PUSH PUSH CLR RS1 SETB RS0 MOV R0,# LP: MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY DJNZ R0,LP POP PSW POP ACC ;中断返回END 将以上程序补充完整,流水时间间隔,闪烁时间间隔为250ms。C51语言参考程序: #include #include #define uchar unsigned char #define uint unsigned int void delay_ms(uint x) { uint i; uchar j; for(i=0;i

实验六外部中断实验一 一、实验要求 1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2.P1口上拉接8个LED; 3.在Keil软件中编写程序,对LED显示进行控制,显示方式有两种:(1)0、7亮,1、 6亮,2、5亮,3、4亮,0、7亮循环;(2))3、4亮,2、5亮,1、6亮,0、7亮, 3、4亮循环。 4.在P3.2连接一个按键,当按键弹起时引脚为高电平,当按键按下时引脚为低时平 5.编写程序:系统对LED显示进行控制,一开始显示方式为(1),当按下P3.2连接 的按键时,系统在(1)和(2)之间切换显示方式 二、实验目的 1.学习端口输入输出的高级应用 2.掌握LED查表显示法 3.掌握外部中断的工作原理 4.掌握外部中断程序设计 三.实验说明 (条理清晰,含程序的一些功能分析计算) 1.程序中void my_int(void) interrupt 0 using 1 { flag=!flag;} //中断子程序是中断子程序,就是按键按下中断一次。 2.以下是灯亮的方式改变,即flag取反一次就改变一次。通过i++或i—实现 变化。 while(1) { P1=LED[i]; //在P1口显示灯亮的方式 delay_ms(500); //延时0.05s if(flag) //判断P3^2开关是否按下 {i++; if(i>=4) //如果灯显示从两边到中间要在回到两边 i=0;} else{i--; if(i<0)//同上 i=3;} 四、硬件原理图及程序设计 (一)硬件原理图设计

(二)程序流程图设计 是 开始 定义变量 i=0;flag=1; P0=LED[i]; Flag ? i++; 否 i--; P3.3按下时进行中 断 Flag=flag!;

7.1EXTI外部按键中断实验 前面我们学习了,LED灯和按键。实际上对于STM32来说,我们是学习了它的外设GPIO。这一节我们前面学习的内容,学习STM32的EXTI (External interrupt),即外部中断。 前面的按键章节中,我们检测按键是否被按下的方式是轮询检测的方式,这里我们改为使用中断检测的方式,提高CPU的效率。 7.1.1什么是中断 单片机中断系统的概念:什么是中断,我们从一个生活中的例程引入。比如说你在做A 事,但是突然间来了你想起来了更重要的B事,所以你马上去做B事了,做完之后再回来继续做A事,这个就是中断。 7.1.2什么是单片机的中断? 当CPU正在执行一个任务,但突然又发生了一个更高级的任务,CPU必须立即去执行的任务,所以CPU必须中断当前的任务,并保存该任务已经执行的状态和相关信息,然后转而去执行那个更加高级的任务,因此就引入了“中断”这个概念。 中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。 在程序里面也是一样的。举个例子可能会容易懂点,定时中断:比如你定时1ms,主程序在运行,每当1ms时间到后,就跑到定时中断子程序里面执行,执行完后再回到主程序(中断程序是1ms中断一次)。那对于整个系统来说中断能实现什么好处呢?下面我们给以说明:1)提高了CPU的效率 CPU是计算机的指挥中心,它与外围设备(如按键、显示器等)通讯的方法有查询和中断2种:查询的方法是无论外围IO是否需要服务,CPU每隔一段时间都要依次查询一遍,这种方法CPU需要花费一些时间在做查询服务工作。 中断则是在外围设备需要通讯服务时主动告诉CPU,这个时候CPU才停下当前工作去处理中断程序,不需要占用CPU主动去查询的时间,CPU可以在没有中断请求来临之前一直做自己的工作,从而提高了CPU效率。 2)可以实现实时处理 外设任何时刻都可能发出请求中断信号,CPU接到请求后及时处理,以满足实时系统的需要。 3)可以及时处理故障 计算机系统运行过程中难免会出现故障,有许多事情是无法预料的,如电源掉电、存储器出错、外围设备工作不正常等,这时可以通过中断系统向中断源CPU发送中断请求,由CPU及时转到相应的出错处理程序,从而提高计算机的可靠性。 7.1.3STM32中断的初步理解 神舟III号开发板的主芯片是STM32F103ZET6,它采用的是ARM公司的Cortex-M3内核。Cortex-M3内核支持256个中断,具有256级的可编程中断设置。但STM32并没有使用M3

相关文档
最新文档