当前位置:文档之家› 第六章8259A练习题及答案

第六章8259A练习题及答案

第六章8259A练习题及答案
第六章8259A练习题及答案

两种方式查询和中断

https://www.doczj.com/doc/75211142.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 个字节的数据块方面比地址位模式更有效;地址位模式在每个字节中加入一个额外位(地址位)来区分地址和数据,这种模式在处理多个小数据块时更有效。

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 输入寄存器*/

单片机各寄存器汇总

符号 地址功能介绍 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只能设置为输入。

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

嵌入式-中断实验

实验五中断控制实验 (一)实验目的 了解中断的作用; 掌握嵌入式系统中断的处理流程; 掌握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响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。中断服务子程序的一般结构如下图所示。

如果在中断服务函数 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 参数,做重入说明。

ARM中断及相关寄存器

ARM中断及相关寄存器 要正确应用ARM处理器必须首先对它的系统寄存器进行正确配置,下面简要介绍一下ARM寄存器,包括一些中断寄存器设置如中断状态(0x8000.0240,0x8000.1240,0x8000.2240)和中断屏蔽寄存器(0x8000.0280,0x8000.1280,0x8000.2280)。 ARM中断寄存器主要包括: ·中断模式寄存器可以设置2个中断源为IRQ或FIQ方式。 ·中断挂起寄存器,当有中断请求产生时,相应的位会被硬件置1,处于挂起状态。当进入中断处理程序时,必须通过软件清除这个标志位,以标志响应中断请求。 ·中断屏蔽寄存器,当需要屏蔽某些中断源时,可以设置相对应的位。 ·中断优先级寄存器可以设置21个中断源优先级的高低。 ·中断偏移寄存器,中断响应时通过读这个寄存器可以查到当前的中断源。 如表1所示是ARM的一些系统寄存器列表。 表1 ARM系统寄存器列表 系统寄存器中的每一位或几位都对应系统功能的控制、状态等信息。例如: ·SYSCON1中的UARTIEN、LCD EN位分别控制异步串口1与LCD显示的使能。 ·SYSCON2中的SDRAM Z用来设置SDRAM存储器的位宽。 ·SYSCON3中的CLKCTL用来在18MHz、37MHz、49MHz和74MHz中选择一种作

为系统工作频率。 与系统运行紧密相关的其他寄存器如表2所示,对它们进行正确设置,就可以启用 SDRAM、LCD或者串行通信口。 表2 ARM的其他重要寄存器列表 数据手册上是这么说的: INTPND 寄存器中的26 个位对应着每一个中断源。当某个中断产生时,INTPND 中相 应的pending 位就会置1,说明该中断还未被处理。中断服务程序中必须清除该pending 位,从而使系统能够及时响应下一次中断。INTPND 是一个只读寄存器,清除pending 位的方式 是向I_ISPC/F_ISPC 的相应位写入“1”。在多个中断同时发生时,INTPND 将所有发生的中断pending 位都置1。虽然中断请求可以通过INTMSK 寄存器屏蔽,但是如果被屏蔽的中断 发生了,INTPND 中的pending 位仍然会被置1。

Cortex M3学习笔记 02 寄存器,中断控制器

Cortex M3学习笔记 02 寄存器,中断控制器 好像百度看了我的文章一样,上次笔记中写了一些对抱怨审核太慢的内容,结果第二天就审核好了,不知道这次速度怎么样…… 1、名词定义 MSP:主堆栈指针; PSP:进程堆栈指针; 2、寄存器 通用寄存器:32位一个,不多说,一共22个。 R0~R15,其中R13是个有两个堆栈指针寄存器的功能,一共17个;另外还有5个特殊功能寄存器。下面来理解。 a) 通用寄存器 R0~R12: 用于数据操作,使用Thumb-2可以全部访问,使用Thumb只能访问R0~R7。 R13: 堆栈指针(SP):包括主堆栈指针(MSP),进程堆栈指针(PSP) PUSH和POP指令的用法解释: PUSH {R0} // *(--R13)=R0;R13是long*型指针 POP {R0} // R0=*R13++ R13的最低两位强制为0,且读取同样也为0; R14: 连接寄存器(LR):保存子程序返回时的地址; R15: 程序计数器(PC):PC返回的地址是当前那指令的地址+4。 例如: 0x4000 MOV R0 , PC ; //R0=0x4004; 当针对执行一条写入R15指令时,写入R15的地址被当成一个指令地址,程序从这个地址处开始执行,但是不更新LR寄存器,相当于引发一次跳转; PC的LSB读回内容始终为0,不论是直接写入PC的值,还是使用分

支跳转命令,都要求加载到PC的值是奇数(LSB=1),用以表明处理器是在Thumb状态下执行。若写入0,则视为企图跳转到ARM模式,Cortex-M3将产生一个fault异常。 b) 特殊功能寄存器 程序状态寄存器组(PSRs); 分为: 应用状态寄存器(APSR)为[27~31]; 中断状态寄存器(IPSR)为[0~8]; 执行状态寄存器(EPSR)为[10~15],[24~26]; 共计32位 自己画个0~31的寄存器 “位”表格,很直观。 中断屏蔽寄存器组(PRIMASK、FAULTMASK、 BASEPRI); PRIMASK相当于中断总开关, 当PRIMASK=1时,屏蔽所有中断(除NMI和fault外)。 FAULTMASK屏蔽错误中断。 BASEPRI优先级屏蔽寄存器中断。 控制寄存器(CONTROL)。 第1.定义特权级别:特权级线程模式,用户级线程模式; CONTROL[0]=0是特权级; CONTROL[0]=1是用户级; 第2.选择当前堆栈指针:主堆栈MSP,备用堆栈。 CONTROL[1]=0是主堆栈(复位缺省); CONTROL[1]=1是备用堆栈, 特殊功能寄存器不存在地址,只能被专用的MSR和MRS指令访问。使用方式: MRS , ; 读特殊功能寄存器的值到通用寄存器; MSR , ; 写通用寄存器的值到特殊功能寄存器; 其中是通用寄存器,是特殊寄存器; 例如: · MOV R0,#0x01; MOV RPIMASK,R0; · MOV R0,0x60; MOV BASEPRI,R0;

和中断有关的专用寄存器

TCON timer control 定时器控制寄存器 TF1 (TCON.7) Timer1 flag T1中断标志位 TF0 (TCON.5) Timer0 flag T0中断标志位 TR1 (TCON.6) Timer1 Run T1运行控制位 TR0 (TCON.4) Timer0 Run T0运行控制位 IE1 (TCON.3) Interrupt1 exterior 外部中断1中断标志位IT1 (TCON.2) Interrupt1 touch 外部中断1 触发方式选择位IT0 (TCON.0) Interrupt0 touch 0-电平触发 1-下降沿触发IE0 (TCON.1) Interrupt0 exterior 外部中断0中断标志位IE(A8H) interrupt enable 中断允许寄存器 EA (IE.7) enable all interrupt 中断总允许位 ES (IE.4) enable serial 串行口中断允许位 ET1 (IE.3) enable timer 1 T1中断允许位 EX1 (IE.2) enable exterior 1 外部中断1中断允许位 ET0 (IE.1) enable timer 0 T0中断允许位 EX0 (IE.0) enable exterior 0 外部中断0中断允许位 IP (B8H) interrupt priority 中断优先级寄存器 PS (IP.4) priority serial 串口优先级标志位 PT1 (IP.3) priority timer 1 定时器1优先级标志位 PT0 (IP.1) priority timer 0 定时器0优先级标志位 PX1 (IP.2) priority exterior 1 外部中断1优先级标志位 PX0 (IP.0) priority exterior 0 外部中断0优先级标志位

中断寄存器

一、中断序号 二、IE(interrupt enable)中断允许寄存器(可以位寻址) 只有打开全局开关,其它各位的开关才可以开启。每个位开关赋值为1则开,赋值为0则关。 使用方法:(1)整体赋值:如IE=0x81;(开启全局中断,打开外部中断0) (2)、单独赋值:如EA=1;EX0=1;(开启全局中断,打开外部中断0) 三、IP中断优先级控制寄存器(可位寻址) 四 PCON电源控制寄存器(只能字节寻址,不能位寻址) SMOD:波特率加倍位,该位与串口通信有关。 POF:掉电标志位。 GF1,GF0:两个通用工作标志位,用户可以自由使用。 PD:掉电模式设定位。 ●PD=0 单片机处于正常工作状态。 ●PD=1 单片机进入掉电(Power Down)模式,可由外部中断或硬件复位模式唤醒, 进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部 中断工作。在该模式下,只有硬件复位和上电能够唤醒单片机。 IDL:空闲模式设定位。 ●IDL=0 单片机处于正常工作状态。 ●IDL=1 单片机进入空闲(Idle)模式,除CPU不工作外,其余仍继续工作,在空闲 模式下可由任一个中断或硬件复位唤醒。 五 TCON(Timer Control Register)定时器/计数器控制寄存器(可位寻址)

TF1:定时器1溢出标志位。 ●当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序 后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。 ●由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器 1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志位。发生中断后由硬件置1,响应中断后由硬件清零。 IT1:外部中断1触发方式选择位。 ●当IT1=0,为低电平触发方式; ●当IT1=1,为下降沿触发方式。 IE0:外部中断0请求标志位。发生中断后由硬件置1,响应中断后由硬件清零。 IT0:外部中断0触发方式选择位。与IT1一样。 六、SCON(SerialControlRegister)串行口控制寄存器(可位寻址) SM0、SM1——串行口工作方式控制位,有方式0、1、2、3,共四种。 SM2——多机通信控制位,用于控制单机通信还是多机通信。 ●工作于方式0时,SM2不起作用。 ●工作于方式1时,若SM2为0,不论停止位是什么,数据都送入SBUF,且发出中断 申请。 ●工作于方式1时,若SM2为1,只有停止位是1时,数据才送入SBUF,且发出中断 申请。否则收到的数据放弃。 ●在方式2或3时,当SM2为1时,且接受到的第9位数据RB8为1时,才把接受到 的前8位数据送入SBUF,且置位RI发出中断申请,否则将收到的数据放弃。 ●在方式2或3时,当SM2=0时,不管第9位是什么,接受的前8为都送入SBUF, 且发出中断申请。 REN——允许接收位。REN=1时,允许接收,REN=0时,禁止接收。 TB8——发送接收数据位8。 RB8——接收数据位8。 TI——发送中断标志位,可寻址标志位。方式0时,发送完第8位数据后,由硬件置位。因此,TI=1表示帧发送结束,TI可由软件清“0”。 RI——接收中断标志位,可寻址标志位。接收完第8位数据后,该位由硬件置位,RI=1表示帧接收完成,RI可由软件清“0”。

AT89C52中断系统寄存器

定时器控制寄存器TCON TCON:Timer控制寄存器,是管理定时器工作的 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平触发; =1:在INT0/INT1端申请中断的信号负跳变触发. IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。 TF0/TF1:定时器0/定时器1溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。 TR0/TR1:定时器运行启停控制位: =0:定时器停止运行; =1:定时器启动运行。 中断允许寄存器IE EA —ET2 ES ET1 EX1 ET0 EX0 EX0/EX1/ET1/ET0/ES 位: 分别是INT0/1,Timer0/1,串行口的中断允 许控制位: =0 时禁止中断;=1 时允许中断。 ET2:T2中断允许控制位(仅52系列有) =0 时禁止中断;=1 时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。 中断优先级控制寄存器IP ——PT2 PS PT1 PX1 PT0 PX0 PX0/PX1:INT0/1优先级控制位: =0 时属低优先级;=1 时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位: =0 时属低优先级;=1 时属高优先级。 PS1:串行口中断优先级控制位: =0 时属低优先级;=1 时属高优先级。 interrupt m 修饰符 interrupt m C51中断函数必须通过它进行修饰。在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m的取值为0~31,对应的中断情况如下:

MRS和MSR读状态寄存器操作指令详解

MRS,MSR指令详解 在ARM处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。例如: MRS R1,CPSR ; 将CPSR状态寄存器读取,保存到R1中 MRS R2,SPSR ; 将SPSR状态寄存器读取,保存到R2中 通过MRS指令可以取得状态寄存器里的值,然后比较其模式位M[4:0]的值判断当前所处模式,当然也可以比较其它相应位了解当前CPU的状态。 同样,在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。 由于xPSR寄存器代表了CPU的状态,其每个位有特殊意义,在执行对xPSR状态寄存器写入时(读取时不存在该用法),为了防止误操作和方便记忆,将xPSR里32位分成四个区域,每个区域用小写字母表示: c 控制域屏蔽 psr[7..0] x 扩展域屏蔽 psr[15..8] s 状态域屏蔽 psr[23..16] f 标志域屏蔽 psr[31..24] 注意:区域名必须为小写字母 向对应区域进行执行写入时,使用xPSR_x可以指定写入区域,而不影响状态寄存器其它位,如: 使能IRQ中断: ENABLE_IRQ MRS R0, CPSR ; 将CPSR寄存器内容读出到R0 BIC R0, R0,#0x80 ; 清掉CPSR中的I控制位 MSR CPSR_c,R0 ; 将修改后的值写回 CPSR寄存器的对应控制域 MOV PC,LR ; 返回上一层函数 禁用IRQ中断: DISABLE_IRQ MRS R0 CPSR ; 将CPSR寄存器内容读出到R0 ORR R0, R0,#0x80 ; 设置CPSR中的I控制位 MSR CPSR_c,R0 ; 将修改后的值写回 CPSR寄存器的对应控制域 MOV PC,LR ; 返回上一层函数 下表列出了不同模式的二进制数表示:

CPSR程序状态寄存器

程序状态寄存器 CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。 CPSR格式如下所示。SPSR和CPSR格式相同。 31 30 29 28 27 26 7 6 5 4 3 2 1 0 N Z C V Q DNM(RAZ) I F T M4 M3 M2 M1 M0 条件码标志保留控制位 条件标志位 N——本位设置成当前指令运算结果的bit[31]的值。当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。

z——z=1表示运算的结果为零;z=0表示运算的结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。 C——下面分四种情况讨论C的设置方法: 在加法指令中(包括比较指令CMP),当结果产生了进位,则C=1,表示无符号运算发生上溢出;其他情况C=0。 在减法指令中(包括减法指令CMP),当运算中发生错位,则C=0,表示无符号运算数发生下溢出;其他情况下C=1。 对于包含移位操作的非加碱运算指令,C中包含最后一次溢出的的位的数值 对于其他非加减运算指令,C位的值通常不受影响 V——对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号为溢出;通常其他指令不影响V位。 Q标识位 在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在异常中断发生时保存和恢复CPSR中的Q标识位。 在ARM V5以前的版本及ARM V5的非E系列的处理器中,Q标识位没有被定义。 CPSR中的控制位 CPSR的低八位I、F、T、M[4:0]统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。 * 中断禁止位:当I=1时禁止IRQ中断,当F=1时禁止FIQ中断 * T控制位:T控制位用于控制指令执行的状态,即说明本指令是ARM指令还是Thumb 指令。对于ARM V4以更高版本的T系列ARM处理器,T控制位含义如下: T=0表示执行ARM指令 T=1表示执行Thumb指令 对于ARM V5以及更高版本的非T系列处理器,T控制位的含义如下 T=0表示执行ARM指令

外部中断的设置和一些寄存器的介绍

1)初始化IO 口为输入。 外部中断输入的IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。 ①使能IO口的时钟 ②清除原来的相应的设置 ③设置成上拉输入0x80 ④把GPIO_ODR相应的位设置成 1 2)开启IO 口复用时钟,设置IO 口与中断线的映射关系。 STM32 的IO 口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置IO 口与中断线的对应关系。才能把外部中断与中断线连接起来。 ①使能复用时钟 RCC_APB1ENR第0位AFIOEN:辅助功能IO时钟使能RCC->APB1ENR |= 1<<0 ②设置外部中断配置寄存器(AFIO_EXTICR1) 总共有三个配置寄存器,分别对应着15个中段线。每个寄存器存放四个。如上图。 在设置这些位时仍然2步: 首先:清除原来的设置。AFIO->EXTICR[0]&=~(0x000F<<0); //清除中断线0的原来的设置 然后:设置映射到那个端口。AFIO->EXTICR[0]|=0<<0;//设置引脚为0000也就是A口扩展:事件控制寄存器(AFIO_EVCR) 位7 EVOE:允许事件输出(Event output enable) 位7 该位可由软件读写。当设置该位后,Cortex的EVENTOUT将连接到由PORT[2:0]和PIN[3:0]选定的I/O口。 位6:4PORT[2:0]:端口选择000:选择PA 001:选择PB 010:选择PC 011:选择PD 100:选择PE 位3:0 PIN[3:0]:引脚选择(x=A…E)

单片机中断寄存器设置

中断寄存器的设置

中断允许寄存器 IE EA ES ET1EX1ET0EX0 10000110

?定时器中断T0 ?EA=1; ?ET0=1; ?相当于IE=0x82; //10000010?TR0=1; ?TR0=0;?外部中断INT0 ?EA=1; ?EX0=1; ?相当于IE=0x84; //10000010?IT0=1; IE EA ES ET1EX1ET0EX0 10000110IE EA ES ET1EX1ET0EX0 10000100

定时器/计数器控制寄存器TCON TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 形式符号位地址功能说明 中断控制IT0 88H 外部中断0的触发方式设置位 IT0=0:低电平触发 IT0=1:下降沿触发 IT0的状态由用 户通过初始化程 序定义 IE0 89H 外部中断0请求标志位。 CPU采样到外部中断0的中断请求时, IE0=1 CPU响应该中断时, IE0=0 IE0的状态由单 片机自动设置TR0 8CH TR0=1:启动定时/计数器T0 TR0=0:停止定时/计数器T0 TR0的状态由用 户通过初始化程 序定义 TF0 8DH 定时/计数器T0溢出中断请求位 T0定时或计数完成时TF0=1,同时申请中 断 CPU响应该中断时, TF0=0 TF0的状态由单 片机自动设置

如何让中断开始 形式 符号 位地址 功 能 说 明 定时/计数控制 TR1 8EH TR1=1:启动定时/计数器T1TR1=0:停止定时/计数器T1 TR1的状态由用户通过初始化程序定义 TF1 8FH 定时/计数器T1溢出中断请求位T1定时或计数完成时TF1=1,同时申请中断CPU 响应该中断时, TF1=0 TF1的状态由单片机自动设置 TR1 8EH TR1=1:启动定时/计数器T1TR1=0:停止定时/计数器T1 TR1的状态由用户通过初始化程序定义 TF1 8FH 定时/计数器T1溢出中断请求位T1定时或计数完成时TF1=1,同时申请中断CPU 响应该中断时, TF1=0 TF1的状态由单片机自动设置

S7-200状态寄存器说明书

S7-200 符号名SM 地址用户程序读取SMB0状态数据 Always_On SM0.0 该位总是打开。 First_Scan_On SM0. 1 首次扫描周期时该位打开,一种用途是调用初始化子程序。Retentive_Lost SM0.2 如果保留性数据丢失,该位为一次扫描周期打开。该位可用 作错误内存位或激活特殊启动顺序的机制。 RUN_Power_Up SM0.3 从电源开启条件进入RUN(运行)模式时,该位为一次扫描周 期打开。该位可用于在启动操作之前提供机器预热时间。Clock_60s SM0.4 该位提供时钟脉冲,该脉冲在1分钟的周期时间内OFF (关闭)30秒,ON(打开)30秒。该位提供便于使用的延迟或1 分钟时钟脉冲 。 Clock_1 SM0.5 该位提供时钟脉冲,该脉冲在1秒钟的周期时间 内OFF(关闭)0.5秒,ON(打开)0.5秒。该位 提供便于使用的延迟或1秒钟时钟脉冲。 Clock_Scan SM0.6 该位是扫描周期时钟,为一次扫描打开,然后为下一次扫描关闭。该位可用作扫描计数器输入。 Mode_Switch SM0.7 该位表示“模式”开关的当前位置(关闭=“终止”位置,打开=“运行”位置)。开关位于RUN(运行)位置时,您可以使用该位启用自由口模式,可使用转换至“终止”位置的方法重新启用带PC/编程设备的正常通讯。 特殊内存字节1(SM1.0 - SM1.7)为各种不同的指令提供执行状态,例如表格和数学运算。这些位在执行时由指令设置和重新设置。程序可以读取位值,然后根据数值作出决定。 S7-200 符号名SM 地址用户程序读取SMB1状态数据 Result_0 SM1.0 当操作结果为零时,某些指令的执行打开该位。Overflow_Illegal SM1.1 当溢出结果或检测到非法数字数值时,某些指令的执行打开该位。 Neg_Result SM1.2 数学操作产生负结果时,该位打开。 Divide_By_0 SM1.3 尝试除以零时,该位打开。 Table_Overflow SM1.4 “增加至表格”指令尝试过度填充表格时,该位打开。Table_Empty SM1.5 LIFO或FIFO指令尝试从空表读取时,该位打开。Not_BCD SM1.6 尝试将非BCD数值转换为二进制数值时,该位打开。Not_Hex SM1.7 当ASCII数值无法转换成有效的十六进制数值时,该位打开。 S7-200 符号名SM 地址用户程序读取SMB4状态数据 Comm_Int_Ovr **SM4.0 通讯中断队列溢出时,该位打开。 Input_Int_Ovr * *SM4.1 输入中断队列溢出时,该位打开。

相关主题
文本预览
相关文档 最新文档