搜档网
当前位置:搜档网 › MCS-51与中断有关的寄存器、中断入口地址及编号详解

MCS-51与中断有关的寄存器、中断入口地址及编号详解

MCS-51与中断有关的寄存器、中断入口地址及编号详解

MCS-51与中断有关的寄存器、中断入口地址及编号详解

MCS-51单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本文主要详解MCS-51与中断有关的寄存器、中断入口地址及编号,具体的跟随小编一起来了解一下。

MCS-51单片机引脚图及功能

1、电源

Vcc:芯片电源,一般为+5V;

Vss:接地端。

2、时钟

XTAL1和XTAL2:晶体振荡电路反相输入端和输出端。当使用内部振荡电路时,需要外接晶振,常见有的4M、6M、11.0592M、12M等。当使用外部振荡输入时XTAL1接地,XTAL2接外部振荡脉冲输入。

3、控制线

MCS-51单片机的控制线共有4根,其中3根是复用线,具有两种功能。

(1)ALE/PROG:地址锁存允许/编程脉冲。

ALE:正常使用时为ALE功能,主要用来锁存P0口送出的8位地址。P0口一般分时传送低8位地址和数据信号,且均为二进制数。区分是否是低8位数据信号还是地址信号就看ALE引脚。当ALE信号有效时,P0口传送的是低8位地址信号;当ALE无效时,P0口传送的是8位数据信号。一般在ALE引脚的下降沿锁定P0口传送的内容,即低8位地址信号。

当CPU不执行访问外部RAM指令(MOVX)时,ALE以时钟振荡频率1/6的固定频率输出,所以ALE信号也可以作为外部芯片的时钟信号。但当CPU执行访问外部RAM

《8259中断控制器实验》的实验报告

实验六8259中断控制器实验 6.1 实验目的 (1) 学习中断控制器8259的工作原理。 (2) 掌握可编程控制器8259的应用编程方法。 6.2 实验设备 PC微机一台、TD-PIT+实验系统一套。 6.3 实验内容 1. 单中断应用实验 (1)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。 (2)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello”,中断5次后退出。 2.扩展多中断源实验 利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IR1中断请求进行处理。 6.4 实验原理 1. 8259控制器的介绍 中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。8259A的内部结构和引脚如图6-1所示。 8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如图6-2所示,

计算机组成原理 中断实验

实验五中断实验 实验地点:格致A315 实验日期:2016年12月29日 一、实验目的 学习和掌握中断产生、响应、处理等技术; 二、实验说明及内容 说明: 1.要求中断隐指令中执行关中断功能,如果用户中断服务程序允许被中断,必须在中断服务程序中执行EI开中断命令。 2.教学机的中断系统共支持三级中断,由三个无锁按键确定从右到左依次为一、二、三级中断,对应的INT2、INT1、INT0的编码分别是01、10、11,优先级也依次升高。这决定了它们的中断向量(即中断响应后,转去执行的程序地址)为XXX4、XXX8、XXXC;可以看到,每级中断实际可用的空间只有四个字节,故这个空间一般只存放一条转移指令,而真正的用户中断服务程序则存放在转移指令所指向的地址。 3.用户需扩展中断隐指令、开中断指令、关中断指令、中断返回指令及其节拍。内容: 1.扩展中断隐指令。 2.扩展开中断指令EI、关中断指令DI、中断返回指令IRET。 3.确定中断向量表地址。中断向量表是以XXX4H为首地址的一段内存区。高12位由用户通过置中断向量用的插针(在三个无锁按键下方)确定。三级中断对应的中断向量为XXX4H、XXX8H、XXXCH。当有中断请求且被响应后,将执行存放在该中断的中断向量所指向的内存区的指令。 4.填写中断向量表。在上述的XXX4H、XXX8H、XXXCH地址写入三条JR OFFSET转移指令,OFFSET分别对应三段中断服务程序的相对地址。但在本仿真终端中输入时,用户不需要计算偏移量,直接输入要转向的绝对地址即可。 5.编写中断服务程序。中断服务程序可以放在中断向量表之后,中断服务程序可实现在程序正常运行时在计算机屏幕上显示与优先级相对应的不同字符; 6.编写主程序。可编写一死循环程序,等待中断;

两种方式查询和中断

https://www.sodocs.net/doc/2717683516.html,/2005/09/20112166428-3.shtml ●系统控制与状态寄存器1:SCSR1; ●I/O多路控制寄存器A:MCRA; ●通信控制寄存器:SCICCR; ●SCI控制寄存器1:SCICTL1; ●波特率选择寄存器:SCIHBAUD和SCIL-BAUD; ●SCI控制寄存器2:SCICTL2; ●接收状态寄存器:SCIRXST; ●仿真数据缓冲寄存器:SCIRXEMU; ●接收数据缓冲寄存器:SCIRXBUF; ●发送数据缓冲寄存器:SCITXBUF; ●优先级/仿真控制寄存器:SCIPRI; ●中断屏蔽寄存器:IMR; ●外设中断向量寄存器:PIVR。 利用240X串行通信接口进行串行通信可采用查询或中断两种模式来实现。 3.2查询模式 采用查询模式进行通信时,在对有关寄存器初始化后,主要是通过不断地检查有关寄存器的相应标志位来实现数据的接收和发送。查询模式发送数据是通过检查SCI控制寄存器2(SCICTL2)中的发送就绪(TXRDY)标志来实现的,其发送程序框图如图1所示。查询模式接收数据则通过检查接收状态寄存器(SCIRXST)中的接收就绪(RXRDY)和接收错误(RXERROR)标志来实现,其接收程序框图如图2所示。 点击此处查看全部新闻图片 点击此处查看全部新闻图片

3.3中断模式 由于在240XCPU内核一级可用的中断只有六个(INT1~INT6),而240X的外设不止六个,且每个外设又可产生一个或多个中断,因此对外设中断的处理只能采用复用方式,即所有外设均共用INT1~INT6这六个中断。具体的中断源则由外设中断向量寄存器(PIVR)来指示。这样在公用的INT1~INT6中断服务程序中必须首先检查外设中断向量寄存器(PIVR),在确定了具体的外设中断源后才能转入相应的外设中断处理子程序。 240X串行通信接口模块的数据接收和发送可分别申请中断,且具有高低两种优先级,其中高优先级的接收和发送中断共用CPU中断INT1,低优先级的接收和发送中断共用CPU中断INT5,因此高优先级的接收和发送中断处理程序应放在INT1的中断服务程序中,而低优先级的接收和发送中断处理程序应放在INT5的中断服务程序中。串行通信接收和发送中断在外设中断向量寄存器(PIVR)中的值分别为0006h 和0007h,在INT1或INT5的中断服务程序中可通过检查外设中断向量寄存器(PIVR)的值来转入相应的接收或发送中断处理程序,若PIVR的值为0006h,则转入接收中断处理程序,若为0007h,则转入发送中断处理程序。 串行通信接口模块有两个多处理器通信协议:空闲线多处理器模式和地址多处理器模式。空闲线模式在地址前留有一个固定空间,该模式没有附加的地址/数据位,它在处理包含多于10 个字节的数据块方面比地址位模式更有效;地址位模式在每个字节中加入一个额外位(地址位)来区分地址和数据,这种模式在处理多个小数据块时更有效。

计算机组成原理中断实验报告

北京建筑大学 2015/2016 学年第二学期 课程设计 (签名) 计算机组成综合实验任务书

?5、利用上端软件,把所编写的微程序控制器内容写入实验台中控制器中。 ?6、利用单拍测试控制器与编程的要求是否一致。如果有错误重新修改后再写入控制器中。 7、编写一段测试程序,测试控制器运行是否正确。 实验目的 1.融合贯通计算机组成原理课程,加深对计算机系统各模块的工作原理及相互联系(寄存器堆、运算器、存储器、控制台、微程序控制器)。 2.理解并掌握微程序控制器的设计方法和实现原理,具备初步的独立设计能力;3.掌握较复杂微程序控制器的设计、调试等基本技能;提高综合运用所学理论知识独立分析和解决问题的能力。 实验电路 1. 微指令格式与微程序控制器电路 2.微程序控制器组成 仍然使用前面的CPU组成与机器指令执行实验的电路图,但本次实验加入中断系统。这是一个简单的中断系统模型,只支持单级中断、单个中断请求,有中断屏蔽功能,旨在说明最基本的原理。 中断屏蔽控制逻辑分别集成在2片GAL22V10(TIMER1 和TIMER2)中。其ABEL语言表达式如下:

INTR1 := INTR; INTR1.CLK = CLK1; IE := CLR & INTS # CLR & IE & !INTC; IE.CLK= MF; 时, 制逻辑传递给CPU的中断信号,接到微程序控制器上。当收到INTR脉冲信号时,若中断允许位INTE=0,则中断被屏蔽,INTQ仍然为0;若INTE =1,则INTQ =1。 为保存中断的断点地址,以便中断返回,设置了一个中断地址寄存器IAR。第二节图4中的IAR(U19)就是这个中断地址寄存器,它是一片74HC374,有LDIAR和IAR_BUS#两个信号输入端,均连接至微程序控制器。LDIAR信号的上升沿到达时,来自程序计数器PC的

单片机实验六-中断系统实验

信息工程系实验报告 课程名称:单片微型计算机与接口技术 实验项目名称:实验六 中断系统实验 实验时间:2013-12-02 班级:电信*** 姓名:*** 学号:110706 实 验 目 的: 熟悉keil 仿真软件、proteus 仿真软件的使用和单片机外部中断的使用。了解并熟悉51单片机中中断的概念,中断处理系统的工作原理。理解51单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。熟悉中断处理特别是外部中断处理的过程,掌握中断处理子程序的书写格式和使用方法。 实 验 原 理: 现代的计算机都具有实时处理功能,能对外部发生的事件如人工干预、外部事件及意外故障做出及时的响应或处理,这是依靠计算机的中断系统来实现的。 51单片机内部有一个中断管理系统,它能对内部的定时器事件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进行自动的检测判断,当有某个事件产生时,中断管理系统会置位相应标志通知CPU ,请求CPU 迅速去处理。CPU 检测到某个标志时,会停止当前正在处理的程序流程,转去处理所发生的事件(针对发生的事件,调用某一特定的函数,称为该事件的中断服务函数),处理完以后,再回到原来被中断的地方,继续执行原来的程序。 外部中断 内部 定时 外部中断 内部 定时内部 T 源允 总允 允许中断寄存中断优先级 中断源 中断源 高优中断 中断 低优中断 中断T —发送 I I 查询 成 绩: 指导教师(签名):

MCS-51单片机最典型的有5个中断源(外部中断0、1,内部定时器中断0、1,串口中断),具有两个中断优先级。两个外部中断:(— INT0、— INT1)上输入的外部中断源,低电平或负跳变有效,置位TCON中的IE0和IE1中断请求标志位。通过外部中断源触发方式控制位IT可以使外部中断为电平触发方式(=0)或边沿触发方式(=1)。另外控制中断允许寄存器IE可以开放中断。 使用MCS-51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数,它的说明形式为: void 函数名(void) interrupt n using m { 函数体语句 } 这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。 实验环境: 硬件:微机、单片机仿真器、单片机实验板、连线若干 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 实验内容及过程: 一、利用外部中断INT1控制数码管显示0到9。 二、利用外部中断INT1控制两个数码管显示00到99。 1、打开Proteus,绘制电路图,如图6-1,6-2所示: 图6-1实验1整体电路图

msp430状态寄存器介绍概括

寄存器实在太多了。。我有个文档给你看看吧、、 MSP430寄存器中文注释---P1/2口(带中断功能) /************************************************************ * DIGITAL I/O Port1/2 寄存器定义有中断功能 ************************************************************/ #define P1IN_ 0x0020 /* P1 输入寄存器*/ const sfrb P1IN = P1IN_; #define P1OUT_ 0x0021 /* P1 输出寄存器*/ sfrb P1OUT = P1OUT_; #define P1DIR_ 0x0022 /* P1 方向选择寄存器*/ sfrb P1DIR = P1DIR_; #define P1IFG_ 0x0023 /* P1 中断标志寄存器*/ sfrb P1IFG = P1IFG_; #define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/ sfrb P1IES = P1IES_; #define P1IE_ 0x0025 /* P1 中断使能寄存器*/ sfrb P1IE = P1IE_; #define P1SEL_ 0x0026 /* P1 功能选择寄存器*/ sfrb P1SEL = P1SEL_; #define P2IN_ 0x0028 /* P2 输入寄存器*/ const sfrb P2IN = P2IN_; #define P2OUT_ 0x0029 /* P2 输出寄存器*/ sfrb P2OUT = P2OUT_; #define P2DIR_ 0x002A /* P2 方向选择寄存器*/ sfrb P2DIR = P2DIR_; #define P2IFG_ 0x002B /* P2 中断标志寄存器*/ sfrb P2IFG = P2IFG_; #define P2IES_ 0x002C /* P2 中断边沿选择寄存器*/ sfrb P2IES = P2IES_; #define P2IE_ 0x002D /* P2 中断使能寄存器*/ sfrb P2IE = P2IE_; #define P2SEL_ 0x002E /* P2 功能选择寄存器*/ sfrb P2SEL = P2SEL_; MSP430寄存器中文注释---P3/4口(无中断功能) /************************************************************ * DIGITAL I/O Port3/4寄存器定义无中断功能 ************************************************************/ #define P3IN_ 0x0018 /* P3 输入寄存器*/

嵌入式系统实验报告-1-外部中断

《嵌入式系统技术》 实训报告 1、实验目的 z了解S3C2440A 外部中断的工作原理。 z掌握S3C2440A 外部中断的使用方法。 2、实验设备 z PC 机、Multi-ICE 仿真器、2440A 实验箱。 3、实验内容 z通过外部K1、K2、K3、K4、K5、K7 按键触发外部中断E INT1、EINT2、EINT3、EINT4、EINT5、EINT7 4、实验原理 4.1 ARM 的异常中断类型 在嵌入式系统中外部设备的功能实现主要是靠中断机制来实现的。中断功能可以解决CPU 内部运行速度远远快于外部总线速度而产生的等待延时问题。ARM 提供的FIQ 和IRQ 异常中断用于外部设备向C PU 请求中断服务,一般情况下都是采用I RQ 中断。 七种异常中断

中断过程框图 4.2 异常中断响应过程和返回过程 异常中断的响应过程: 1).保存处理器当前状态寄存器C PSR 的值到备份程序状态寄存器S PSR 中。 2).设置但前程序状态寄存器CPSR 的值,其中包括:设置CPSR 响应位的值,使处理器进入特定的处理器模式;按要求屏蔽中断,通常应该屏蔽I RQ 中断。在F IQ 中断时屏蔽F IQ 中断。 3).设置L r 寄存器。将相应中断模式的L r 寄存器的值设为异常中断的返回地址。 4).处理程序计数器PC,将PC 值设为相应的中断向量的地址,从而实现跳转以执行中断服务程序。 异常中断的返回 当处理器执行完以上流程之后,处理器已经从中断向量进入异常处理的状态。异常中断处理完毕之后,在异常中断程序的末端,处理器进入异常中断的返回状态,其流程如下: 1).恢复状态寄存器。将保存的备份程序状态寄存器SPSR 值赋给当前程序状态寄存器CPSR。 2).将返回地址赋值到程序计数器(PC)。这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。 需要注意的是:对于不同的异常中断,其返回地址的计算方法也是不同的,IRQ 和F IQ 异常中断产生时,程序计数器PC 已经更新,而SWI 中断和未定义指令中断时由当前指令自身产生的,程序计数器P C 尚未更新,所以要计算出下一条指令的地址来执行返回操作;指令预取指中指异常中断和数据访问中断要求,返回到出现异常的执行现场,重新执行操作。

单片机各寄存器汇总

符号 地址功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H 串行口锁存器 SCON 98H 串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH 定时器/计数器1(高8位)TH0 8CH 定时器/计数器1(低8位)TL1 8BH 定时器/计数器0(高8位)TL0 8AH 定时器/计数器0(低8位) TMOD 89H 定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 DPTR 82H 83H 83H数据地址指针(高8位) PC SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 电源控制寄存器 、PSW-----程序状态字。 D7D6D5D4D3D2D1D0 CY AC F0 RS1 RS0 OV P 下面我们逐一介绍各位的用途 CY:进位标志。 AC:辅助进、借位(高半字节与低半字节间的进、借位)。 F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0:工作寄存器组选择位。这个我们已知了。 0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P :奇偶校验位:它用来表示ALU 运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。 运算结果有奇数个1,P =1;运算结果有偶数个1,P =0。 例:某运算结果是78H (01111000),显然1的个数为偶数,所以P=0。 定时/计数器寄存器 1.工作方式寄存器TMOD(P134) TMOD 为T0.T1的工作方式寄存器,其各位的格式如下:TMOD D7 D6 D 5 D4 D3 D2 D1 D0 GATE C/-T M1 M0 GATE C/-T M1 M0 定时器1 定时器0 位7 GATE ——T1的门控位。 当GATE=0时,只要控制TR1置1,即可启动定时器T1开始工作; 当GATE=1时,除需要将TR1置1外,还要使INT1引脚为高电平,才能启动相应的定时器开始工作。 位6 C/—T ——T1的功能选择位。 当C/—T=0时,T1为定时器方式; 当C/—T=0时,T1为计数器方式; 位5和位4 M1和M0——T1的方式选择位。 由这两位的组合可以定义T1的3种工作方式 定时器T1工作方式选择表 如右表: 位3 GATE ——T0的门控位。 当GATE=0时,只要控制TR0置1,即可启动定时器T0开始工作; 当GATE=1时,除需要将TR0置1外,还要使INT0引脚为高电平,才能启动相应的定时器开始工作。 位2 C/T ——T1的功能选择位。 当C/—T=0时,T0为定时器方式; 当C/—T=0时,T0为计数器方式; 位1和位0 M1和M0—T0的方式选择位。 由这两位的组合可以定义T1的3种工作方式 定时器T0工作方式选择表 TMOD 不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半节定义定时器0,高半字节定义定时器1。复位时,TMOD 所有位均为0,定时器处于停止工作状态。 定时/计数器控制寄存器中断请求标志寄存器TCON(P183) TCON 的作用是控制定时器的启/停,标志定时器的溢出和中断情况。定时器控制寄存器TCON 各位格式如下:TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 当有中断源发出请求时,有硬件将相应的中断标志位置 1.在中断请求被响应前,相应中断标志位被锁存在特殊功能寄存器TCON 或SCON 中。 TCON 为定时器T0和T1的控制寄存器,同时也锁住T0和T1的溢出中断标志及外部中断——INT0和— M1 M0 工作方式 功能描述 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式 2 自动再装入8位计数器 1 1 方式3 定时器1:停止计数 M1 M0 工作方式 功能描述 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式 2 自动再装入8位计数器 1 1 方式3 定时器0:分成2个8位计数器

飞思卡尔S12系列寄存器和中断讲解

S12的输入/输入端口(I/O口) I/O端口功能 可设置为通用I/O口、驱动、内部上拉/下拉、中断输入等功能。 设置I/O口工作方式的寄存器有: DDR、IO、RDR、PE、IE和PS。 DDR:设定I/O口的数据方向。 IO :设定输出电平的高低。 RDR:选择I/O口的驱动能力。 PE:选择上拉/下拉。 IE:允许或禁止端口中断。 PS:1、中断允许位置位时,选择上升沿/下降沿触发中断;2、中断禁止时且PE有效时,用于选择上拉还是下拉。 I/O端口设置 1、A口、B口、E口寄存器 (1)数据方向寄存器DDRA、DDRB、DDRE DDRA、DDRB、DDRE均为8位寄存器,复位后其值均为0。 当DDRA=0、DDRB=0、DDRE=0 时A口、B口和E口均为输入口。 否则,A口、B口、E口为输出口。当DDRA、DDRB、DDRE的任何一 位置1时,则该位对应的引脚被设置为输出。 例如,将A口设置为输出口,则其C语言程序的语句为:DDRA=0xff;(2)A口、B口、E口上拉控制寄存器PUCR PUCR为8位寄存器,复位后的值为0。当PUPAE、PUPBE、PUPEE被设置为1时,A口、B口、E口具有内部上拉功能;为0时,上拉无效。当A口、B口、E口为地址/数据总线时,PUPAE和PUPBE无效。 (3)A口、B口、E口降功率驱动控制寄存器RDRIV RDRIV为8位寄存器,复位后的值为0,此时,A口、B口、E口驱动保持全功率;当RDPA、RDPB、RDPE为1时,A口、B口、E口输出引脚的驱动功率下降 (4)数据寄存器PORTA、PORTB、PORTE PORTA、PORTB、PORTE均为8位寄存器,复位后的值为0,端口引脚输出低电平;要使引脚输出高电平,相应端口对应位应该置1。 由于PE0是/XIRQ、PE1是IRQ,因此,PE0和PE1只能设置为输入。

计算机操作系统 实验报告

操作系统实验报告 学院:计算机与通信工程学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 成绩: 2014年 1 月 1 日

实验一线程的状态和转换(5分) 1 实验目的和要求 目的:熟悉线程的状态及其转换,理解线程状态转换与线程调度的关系。 要求: (1)跟踪调试EOS线程在各种状态间的转换过程,分析EOS中线程状态及其转换的相关源代码; (2)修改EOS的源代码,为线程增加挂起状态。 2 完成的实验内容 2.1 EOS线程状态转换过程的跟踪与源代码分析 (分析EOS中线程状态及其转换的核心源代码,说明EOS定义的线程状态以及状态转换的实现方法;给出在本部分实验过程中完成的主要工作,包括调试、跟踪与思考等) 1.EOS 准备了一个控制台命令“loop ”,这个命令的命令函数是 ke/sysproc.c 文件中的ConsoleCmdLoop 函数(第797行,在此函数中使用 LoopThreadFunction 函数(第755 行)创建了一个优先级为 8 的线程(后面简称为“loop 线程”),该线程会在控制台中不停的(死循环)输出该线程的ID和执行计数,执行计数会不停的增长以表示该线程在不停的运行。loop命令执行的效果可以参见下图: 2. 线程由阻塞状态进入就绪状态 (1)在虚拟机窗口中按下一次空格键。 (2)此时EOS会在PspUnwaitThread函数中的断点处中断。在“调试”菜单中选择“快速监视”,在快速监视对话框的表达式编辑框中输入表达式“*Thread”,然后点击“重新计算”按钮,即可查看线程控制块(TCB)中的信息。其中State域的值为3(Waiting),双向链表项StateListEntry的Next和Prev指针的值都不为0,说明这个线程还处于阻塞状态,并在某个同步对象的等待队列中;StartAddr域的值为IopConsoleDispatchThread,说明这个线程就是控制台派遣线程。 (3)关闭快速监视对话框,激活“调用堆栈”窗口。根据当前的调用堆栈,可以看到是由键盘中断服务程序(KdbIsr)进入的。当按下空格键后,就会发生键盘中断,从而触发键盘中断服务程序。在该服务程序的最后中会唤醒控制台派遣线程,将键盘事件派遣到活动的控制台。 (4)在“调用堆栈”窗口中双击PspWakeThread函数对应的堆栈项。可以看到在此函数中连续调用了PspUnwaitThread函数和PspReadyThread函数,从而使处于阻塞状态的控制台派遣线程进入就绪状态。 (5)在“调用堆栈”窗口中双击PspUnwaitThread函数对应的堆栈项,先来看看此函数是如何改变线程状态的。按F10单步调试直到此函数的最后,然后再从快速监视对

实验四 定时器中断实验

实验四 定时器中断实验 一:实验目的 1.熟悉定时器初始化的步骤; 2.熟悉定时器控制寄存器(TCR )的含义和使用; 3.熟悉定时器的原理和应用。 二:实验内容 本实验要求编写一个简单的定时器中断程序,设置一定的周期控制与XF 引脚相连的LCD 指示灯。当定时器中断产生时可以观察到LCD 周期性闪烁。 三:实验原理 1.定时器 .C54xx 系列的DSP 都具有一个或两个预定标的片内定时器,这种定时器是一个倒数定时器,它可以被特定的状态位实现停止、重启动、重设置或禁止。定时器在复位后就处于运行状态,为了降低功耗可以禁止定时器工作。应用中可以用定时器来产生周期性的CPU 中断或脉冲输出。定时器的功能方框图如图9.1所示,其中有一个主计数器(TIM )和一个预定标计数器(PSC )。TIM 用于重装载周期寄存器PRD 的值,PSC 用于重装载周期寄存器TDDR 的值。 图5.1信号,是在器件复位时,DSP 向外围电路(包括定时器)发送的一个信号,此信号将在定时器上产生以下效果:寄存器TIM 和PRD 装载最大值(0FFFFH );TCR 的所有位清0;结果是分频值为0,定时器启动,TCR 的FREE 和SOFT 为0。

定时器实际上是有20bit 的周期寄存器。它对CLKOUT 信号计数,先将PSC (TCR 中的D6~D9位)减1,直至PSC 为0,然后把TDDR (TCR 中的低4位)重新装载入PSC ,同时将TIM 减1,直到TIM 减为0。这时CPU 发出TINT 中断,同时在TOUT 引脚输出一个脉冲信号,脉冲宽度与CLKOUT 一致,然后将PRD 重新装入TIM ,重复下去直到系统或定时器复位。 定时器产生中断的计算公式如下: TINT t c 为 CLKOUT 的周期) 定时器由三个寄存器组成:TIM 、PRD 、TCR 。 TIM :定时器寄存器,用于装载周期寄存器值并自减1。 PRD :周期寄存器,用于装载定时器寄存器。 TCR :定时器控制寄存器,包含定时器的控制状态位。 定时器是一个片内减计数器,用于周期地产生发,后者每个CPU 时钟周期减1,当计数器减至0周期计数器被定时周期值重新装载。 在正常操作模式下,当TIM 自减至0时,TIM 将被PRD 内的数值重装载。在硬件复位或定时器单独复位(TCR 中TRB 位置1)的情况下,主定时器模块输出的是定时器中断(TINT )信号。该中断被发送至CPU ,同时由TOUT 引脚输出。TOUT 脉冲的宽度等于CLKOUT 的时钟宽度。 预定标模块由两个类似TIM 和PRD 的单元构成。它们是预定标计数器(PSC )和定时器分频寄存器(TDDR )。PSC 、TDDR 是RCR 寄存器的字段。在正常操作时PSC 自减为0,TDDR 值装入PSC ,同样在硬件复位或定时器单独复位的情况下,TDDR 也被装入PSC 。PSC 被CPU 时钟定时,即每个CPU 时钟使PSC 自减1。PSC 可被TCR 读取,但不能直接写入。 当TSS 置位时,定时器停止工作。若不需要定时器,终止定时操作,可使芯片工作在低功耗模式,并且可以使用与定时器相关的两个寄存器(TIM 和PRD )作为通用的存储器单元,可以在任意周期对它们进行读或写操作。 TIM 的当前值可被读取,PSC 也可以通过TCR 读取。因为读取这两个存储器需要两个指令,而在两次读取之间因为自减,数值可能改变,因此,PSC 两次读的结果可能有差别,不够准确。若要准确测量时序,在读这两个寄存器值之前可先中止定时器,对TSS 置1和清0后,可重新开始定时。 通过TOUT 信号或中断,定时器可以用于产生周边设备的采样时钟,如模拟接口。对于有多个定时器的DSP ,由寄存器GPIOCR 中的第15位控制使用某一个定时器产生的TOUT 信号。 2.定时器初始化 (1)定时器初始化步骤 ●TCR 的TSS 位写1,定时器停止工作; ●装载TRD ;

MCS-51与中断有关的寄存器、中断入口地址及编号详解

MCS-51与中断有关的寄存器、中断入口地址及编号详解 MCS-51单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本文主要详解MCS-51与中断有关的寄存器、中断入口地址及编号,具体的跟随小编一起来了解一下。 MCS-51单片机引脚图及功能 1、电源 Vcc:芯片电源,一般为+5V; Vss:接地端。 2、时钟 XTAL1和XTAL2:晶体振荡电路反相输入端和输出端。当使用内部振荡电路时,需要外接晶振,常见有的4M、6M、11.0592M、12M等。当使用外部振荡输入时XTAL1接地,XTAL2接外部振荡脉冲输入。 3、控制线 MCS-51单片机的控制线共有4根,其中3根是复用线,具有两种功能。 (1)ALE/PROG:地址锁存允许/编程脉冲。 ALE:正常使用时为ALE功能,主要用来锁存P0口送出的8位地址。P0口一般分时传送低8位地址和数据信号,且均为二进制数。区分是否是低8位数据信号还是地址信号就看ALE引脚。当ALE信号有效时,P0口传送的是低8位地址信号;当ALE无效时,P0口传送的是8位数据信号。一般在ALE引脚的下降沿锁定P0口传送的内容,即低8位地址信号。 当CPU不执行访问外部RAM指令(MOVX)时,ALE以时钟振荡频率1/6的固定频率输出,所以ALE信号也可以作为外部芯片的时钟信号。但当CPU执行访问外部RAM

微机接口实验报告-8259中断控制器应用实验

姓名 院专业班 年月日实验内容8259中断控制器实验指导老师 【实验目的】 (1)学习中断控制器8259的工作原理。 (2)掌握可编程控制器8259的应用编程方法。 【试验设备】 PC微机一台、TD-PIT+实验系统一套。 【实验内容】 (1) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。 (2) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“9”,中断显示6次后退出。 【实验原理】 1. 8259控制器的介绍 中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。8259A的内部结构和引脚如图6-1所示。 8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1- OCW3分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。 图6-1 8259内部结构和引脚图

操作系统实验一中断处理

实习一中断处理 一、实习内容 模拟中断事件的处理。 二、实习目的 现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。中断机 构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。对不同的中断事件,由于它们的性质不同,所以操作系统应采用不同的处理。通过实习了解中断及中断处理程序的作用。本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。 三、实习题目 模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。 [提示]: (1) 计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中 断寄存器的每一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成―1‖。 处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为―0‖时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。 本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加1 来模拟处理器 执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示发生了时钟中断事件,转时钟中断处理程序。 (2)假定计算机系统有一时钟,它按电源频率(50Hz)产生中断请求信号,即每隔20 毫秒产生一次中断请求信号,称时钟中断信号,时钟中断的间隔时间(20 毫秒)称时钟单

嵌入式-中断实验

实验五中断控制实验 (一)实验目的 了解中断的作用; 掌握嵌入式系统中断的处理流程; 掌握ARM中断编程。 (二)实验设备 计算机;ARM硬件仿真器;ARM开发板 (三)实验硬件设置 在做实验之前,先将开发板电源接好,将仿真器的USB连线与电脑相连,通电,然后按核心板的复位键。 (四)实验原理 1. 中断的基本概念 CPU与外设之间传输数据的控制方式通常有三种:查询方式、中断方式和DMA方式。DMA 方式将在后续实验中说明。查询方式的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了CPU的利用率。为了解决这个矛盾,通常采用中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器; 或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU再返回并继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。能够向CPU发出中断请求的设备或事件称为中断源。系统引入中断机制后,CPU与外设(甚至多个外设)处于“并行”工作状态,便于实现信息的实时处理和系统的故障处理。中断方式的原理示意图如下所示。 图5-7 中断处理示意图 1)中断响应 中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息。然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。 CPU响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。 2)中断服务子程序 CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。中断服务子程序的一般结构如下图所示。

中断实验报告

沈阳工程学院 学生实验报告 实验室名称:微机原理实验室实验课程名称:微机原理及应用 实验项目名称:8259中断控制器实验实验日期:年月日 班级:姓名:学号: 指导教师:批阅教师:成绩: 一.实验目的 1.熟悉8086中断系统及8259的扩展方法。 2.理解8259中断控制器的工作原理。 3.初步掌握8259的应用编程方法。 二.实验设备 PC机一台,TD-PITE实验装置一套。 三.实验内容 1.实验原理 (1)在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器:一个为主控制器,一个为从控制器。从片的INT连接到主片的IR2信号上构成两片8259的级联。主片8259的中断请求信号IR6和IR7开放,从片的中断请求信号IR1开放,以供实验使用。 (2)单次脉冲输出与主片8259的MIR7相连,每按动一次单次脉冲开关,产生一个外部中断,在显示器上输出一个字符。 8259中断实验接线图 2.实验步骤 (1)补全实验程序,按实验接线图接线。 (2)对实验程序进行编译、链接无误后,加载到实验系统。 (3)执行程序,并按动单次脉冲开关KK1或KK2,观察程序执行结果。 3.程序清单 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:SSTACK START: PUSH DS MOV AX, 0000H MOV DS, AX ·1·

8259中断控制实验 ·2· MOV AX, OFFSET MIR7 ①MOV SI, ( ) MOV [SI], AX MOV AX, CS ②MOV SI, ( ) MOV [SI], AX CLI POP DS MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 01H OUT 21H, AL MOV AL, ( ) OUT 21H, AL STI AA1: NOP JMP AA1 MIR7: STI CALL DELAY MOV AX, 0137H INT 10H MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL IRET DELAY: PUSH CX MOV CX, 0F00H AA0: PUSH AX POP AX LOOP AA0 POP CX RET CODE ENDS END START 四.实验结果及分析 根据实验回答下列问题: 1.按动单次脉冲输入KK1后,屏幕显示字符 。 2.分析中断矢量地址能改成别的数值吗?为什么? 3.改变接线,KK1连接MIR6。修改程序行①为 ,修改程序行②为 ,重新设置中断向量,以及中断屏蔽字改为 。 4.如果输出数字9,如何修改程序? 5.如何屏蔽MIR7上的中断请求?按下KK1会有什么现象? 6.选做:如果采用级联方式扩展一片8259从片,应如何修改程序呢?请将程序写在背面。 成绩评定 对实验原理的掌握情况 2 1 0 — 实验步骤正确性 3 2 1 0 实验数据记录正确性 2 1 0 — 实验结果及分析的正确性 3 2 1 成 绩 批阅教师: 20 年 月 日

如果在中断服务函数 ISR 中使用寄存器

如果在中断服务函数ISR 中使用寄存器,那么必须处理好using 的使用问题: 1、中断服务函数使用using 指定与主函数不同的寄存器组(主函数一般使用Register bank 0)。 2、中断优先级相同的ISR 可用using 指定相同的寄存器组,但优先级不同的ISR 必须使用不同的寄存器组,在ISR 中被调用的函数也要使用using 指定与中断函数相同的寄存器组。用reentranr指明可重入函数。 3、如果不用using 指定,在ISR 的入口,C51 默认选择寄存器组0,这相当于中断服务程序的入口首先执行指令: MOV PSW #0 这点保证了,没使用using 指定的高优先级中断。可以中断使用不同的寄存器组的低优先级中断。 4、使用using 关键字给中断指定寄存器组,这样直接切换寄存器组而不必进行大量的PUSH 和POP 操作,可以节省RAM空间,加速MCU 执行时间。寄存器组的切换,总的来说比较容易出错,要对内存的使用情况有比较清晰的认识,其正确性要由你自己来保证。特别在程序中有直接地址访问的时候,一定要小心谨慎!至于“什么时候要用到寄存器组切换”,一种情况是:当你试图让两个(或以上)作业同时运行,而且它们的现场需要一些隔离的时候,就会用上了。在ISR 或使用实时操作系统RTOS 中,寄存器非常有用。 寄存器组使用的原则: 1、8051 的最低32 个字节分成4 组8 寄存器。分别为寄存器R0 到R7。寄存器组由PSW 的低两位选择。在ISR 中,MCU 可以切换到一个不同的寄存器组。对寄存器组的访问不可位寻址,C51 编译器规定使用using 或禁止中断的函数(#pragma disable )均不能返回bit 类型的值。 2、主程序(main函数)使用一组,如bank 0;低中断优先级的所有中断均使用第二组,如bank 1;高中断优先级的所有中断均使用再另外一组,如bank 2。显然,同级别的中断使用同一组寄存器不会有问题,因为不会发生中断嵌套;而高优先级的中断则要使用与低优先级中断不同的一组,因为有可能出现在低优先级中断中发生高优先级中断的情况。编译器会自动判断何时可使用绝对寄存器存取。 3、在ISR 中调用其它函数,必须和中断使用相同的寄存器组。当没用NOAREGS 命令做明确的声明,编译器将使用绝对寄存器寻址方式访问函数选定(即用using 或REGISTERBANK 指定)的寄存器组,当函数假定的和实际所选的寄存器组不同时,将产生不可预知的结果,从而可能出现参数传递错误,返回值可能会在错误的寄存器组中。 举一例子:当需要在中断内和中断外调用同一个函数,假定按照程序的流程控制,不会出现函数的递归调用现象,这样的调用会不会出现问题?若确定不会发生重入情况,则有以下两种情况: 1、如果ISR 和主程序使用同一寄存器组(主程序缺省使用BANK 0,若ISR 没有使用using 为其指定寄存器区,则缺省也使用BANK 0),则不需其他设置。 2、如果ISR 和主程序使用不同的寄存器组(主程序缺省使用BANK 0,ISR 使用using 指定了其他BANK),则被调用函数必须放在: #pragma NOAREGS #pragma AREGS 控制参数对中,指定编译器不要对该函数使用绝对寄存器寻址方式;或者也可在Options->C51,选中“Dont use absolute register accesses”,使所有代码均不使用绝对寄存器寻址方式(这样,执行效率将稍有降低)。不论以上的哪一种情况,编译器均会给出重入警告,需手工更改OVERLAY 参数,做重入说明。

相关主题