当前位置:文档之家› 单片机中断寄存器汇总

单片机中断寄存器汇总

定时/计数器寄存器1.工作方式寄存器TMOD(P134)TMOD 为T0.T1的工作方式寄存器,其各位的格式如下:TMOD定时器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(P135)TCON 的作用是控制定时器的启/停,标志定时器的溢出和中断情况。

定时器控制寄存器TCON 各位格式如下:TCON(88H)当定时器1计满溢出时,由硬件使TF1置1,并且申请中断。

进入中断服务程序后,由硬件自动清0,在查询方式下用软件清0。

TR1(TCON.6)——定时器1运行控制位。

当TR1=1时,启动定时器1工作; 当TR1=0时,关闭定时器1。

TF0(TCON.5) )——定时器T0溢出标志其功能及操作情况同TF1。

TR0(TCON.4) ——定时器T0运行控制位。

其功能及操作情况同TR1。

IE1((TCON.3) ——外部中断1请求标志位。

外部中断源1有中IE1置1, CPU 响应该中断后,硬件清0。

IT1(TCON.2) ——外部中断1触发方式选择位。

IE0((TCON.1 )——外部中断0请求标志位。

IT0((TCON.0) ——外部中断0触发方式选择位。

TCON 的低四位与中断有关;当系统复位时,TCON 的所有位清零。

中断请求标志寄存器TCON(P183)当有中断源发出请求时,有硬件将相应的中断标志位置1.在中断请求被响应前,相应中断标志位被锁存在特殊功能寄存器TCON或SCON中。

(1)定时器控制寄存器TCONTCON为定时器T0和T1的控制寄存器,同时也锁住T0和T1的溢出中断标志及外部中断——INT0和其各位名称及作用如下:TF1(TCON.7) ——T1溢出中断标志。

当T1开始工作,并且计数值产生溢出时,由硬件使TF1=1,在中断工作方式下向CPU请求中断。

此标志一直保持到CPU响应中断后,才由硬件自动清零;也可用软件查询该标志,并且软件清零。

如果T1不工作,或者在工作但没有产生溢出,则TF1=0.TF0(TCON.5) ——T0溢出中断标志。

其操作功能类似于TF1.IE1(TC0N.3) ————INT1外部中断1标志当硬件使IE1=1时,表明外部中断1向CPU申请中断;当IE=0时,表明外部中断1没有向CPU申请中断。

IT1(TCON.2) ——外部中断1触发方式控制位当IT1=0时,表明外部中断1设置为电平触发方式;当IT1=1时,表明外部中断1设置为边沿触发方式。

IE0(TCON.1) ————INT0外部中断0标志位。

其操作功能与IE1类似IT0(TCON.0) ——外部中断0触发方式控制位.其操作功能与IT1类似TCON.6和TCON.4——中断中未使用中断允许控制寄存器IE(P182)当EA=0时。

CPU将屏蔽所有的中断申请;而当EA=1时,虽然CPU已经开放中断,但还必须设置相应中断源的控制位,才可确定允许哪个中断源中断。

IE各位的格式如下:IE地址(A8H)EA(IE.7) ——中断允许控制位。

当EA=0时。

CPU将屏蔽所有的中断申请,称为“关中断”;当EA=1时,CPU开放中断,每个中断源是被允许还是禁止,分别由其各自的允许位决定(IE.6)——未使用ET2(IE.5)——T2中断允许位(仅AT89S52/C52或类似型号单片机有)当ET2=1时,允许T2中断;当ET2=0时,禁止T2中断ES(IE.4)——串行口中断控制位当ES=1时,允许串行口中断;当ES=0时,禁止串行口中断ET1(IE.3)——T1中断允许位当ET1=1时,允许ET1中断;当ET1=0时,禁止ET1中断EX1(IE.2) ——外部中断1控制位当EX1=1时,允许外部中断1中断;当EX1=0时,禁止外部中断1中断ET0(IE.1) ——T0中断控制位当ET0=1时,允许T0中断;当ET0=0时,禁止T0中断EX0(IE.0) ——外部中断0控制位当EX0=1时,允许外部中断0中断;当EX0=0时,禁止外部中断0中断AT89C51单片机复位后,IE中各中断允许位均被清0,即禁止所有中断中断优先级寄存器IP(P184)专用寄存器IP 为中断优先级寄存器,用于选择各中断优先级,用户可用软件设定。

其各位名称及作用如下:IP(B8H)其各位名称及作用如下:PT2(IP.5)——T2中断优先级选择位(仅AT89S52/C52或类似型号单片机有)当PT2=1时,设置定时器T2为高优先级中断;当PT2=0时,设置定时器T2为低优先级中断;PS(IP.4) ——串行口为高优先级选择位。

当PS=1时,设定串行口为高优先级中断;当PS=0时,设定串行口为低优先级中断;PT1(IP.3) ——T1中断优先级选择位。

当PT1=1时,设定定时器T1为高优先级中断;当PT1=0时,设定定时器T1为低优先级中断;PX1(IP.2) ——外部中断1中断优先级选择位当PX1=1时,设定外部中断1为高优先级中断;当PX1=0时,设定外部中断0为低优先极中断;PT0(IP.1) ——T0中断优先级选择位。

当PT0=1时,设定定时器T0为高优先级中断;当PT0=0时,设定定时器T0为低优先级中断;PX0(IP.0) ——外部中断0中断优先级选择位。

当PX0=1时,设定外部中断0为高优先级中断;当PX0=0时,设定外部中断0为低优先级中断; 当系统复位后,IP 全部清0,将所有中断源设置为低优先级中断。

串行口控制寄存器SCON(P161_162)串行口控制位寄存器SCON 用于通信的方式选择、接收和发送控制,并可反映串行口的工作状态。

其SCON.7和SCON.6位 SN0 和 SM1——串行方式选择位。

在方式2和方式3中,SM2主要用于多机通信控制。

当串行口方式2或方式3接收时,如果SM2=1,允许多机通信,且接收到第九位RB8为0时,则RI 不置1,不接收主机发来的数据,如果SM2=1且RB8为1,则RI 置1,产生中断请求,将接收到的8位数据送如SBUF 。

当SM2=0时,不论RB8为0还是1,都将收到的数据输入SBUF ,并产生中断。

在方式1中,当处于接收状态时,若SM2=1,则只有接收到有效的停止位时,RI 才置1.在方式0中,SM2应置0SCON.4位 REN ——允许串行接收位REN=1时,允许接收,REN=0时禁止接收,有软件置位或者清零TB8——发送数据的第九位(D8)在方式2或方式3中,根据需要由软件置位或复位。

双机通信时,它可约定奇偶校验位,在多机通信中,可以作为区别地址帧或数据帧的标识位。

一般由指令设定地址帧时,设TB8为1;而设定数据帧时,设TB8为0,方式0和方式1中没用该位。

SCON.2 位RB8——接收数据的第9位(D8)在方式2或方式3中,RB8的状态与TB8相呼应,(如可以是约定作奇偶校验位,也可以是约定的地址/数据标识位。

SCON.1位 TI ——发送中断标志位在方式0中,发送完8位数据后,由硬件置位;其他方式中,在发送停止位之初由硬件置位。

T1=1时,可申请中断,也可供软件查询用。

在任何方式中,都必须由软件来清除T1。

SCON.0位 RI ——接收中断标志位在方式0中,接收完8位数据后,由硬件置位;其他方式中,在接收停止位的中间,由硬件置位。

T1=1时,可申请中断,也可供软件查询用。

在任何方式中,都必须由软件来清除R1。

SCON 的低2位与中断有关。

SCON 的地址为98H ,可以位寻址。

在复位时,SCON 的所有位均清0。

各中断源及其自然优先级(P185)比较顺序:1先比优先等级,2优先等级若相同,再比自然优先等级。

电源控制寄存器PCON(P66)有一个电源控制位PCON ,通过对其中有关位进行设置以选择待机方式和掉电方式。

其各位格式如下: SMOD ——波特率背增位。

在串行口工作方式1.2。

或3下,SMOD=1使波特率加倍GFI 和GF0——通用标志位。

用户使用软件置、复位。

PD ——掉电方式位。

若PD=1,则进入掉电工作方式。

若IDL=1,则进入待机工作方式如果PD 和IDL 同事为1,则进入掉电工作方式 复位时。

PCON 中所有定义位均为0.void delay500ms (void) {unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); }void delay200ms(void) {unsigned char i,j,k; for(i=5;i>0;i--) for(j=132;j>0;j--) for(k=150;k>0;k--); }void delay10ms(void) {unsigned char i,j,k;for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); }void delay1s(void) {unsigned char h,i,j,k; for(h=5;h>0;h--) for(i=4;i>0;i--) for(j=116;j>0;j--) for(k=214;k>0;k--);; --以下是500ms 延时程序 ;用到了r1 r2 r3 delay: mov r1,#05hloop2: mov r3,#0c8h loop1: mov r2,#0f8h djnz r2,$ nop djnz r3,loop1 djnz r1,loop2 ret;---------------------------------- END;程序结束指令。

相关主题