单片机学习(三)中断

在单片机中,能完成中断功能的部件称为中断系统。主程序在收到中断请求并响应中断请求后,会在某处暂停执行(断点),转而去处理紧急事件(中断源)。并且主程序在收到中断请求时,会执行完那句指令,再做出反应,因此断点是在一条完整指令后。

1.中断系统寄存器

TCON(中断请求标志位寄存器)

D7D6D5D4D3D2D1D0
TF1TR1TF0TR0IE1IT1IE0IT0

 

IT0:外部中断INT0触发方式控制位,下降沿触发为1,低电平触发为0

IE0:外部中断INT0请求标志位,产生中断请求标志,一般由硬件自动置1

IT1、IE1:同理IT0、IE0,只是对象变为INT1(外部中断1)

TR0:定时/计数器T0的启动位,为1时允许T0工作,为0时不允许T0工作。

TF0:定时/计数器T0的溢出中断标志位

TR1、TF1同理TR0、TF0

SCON(中断请求标志位寄存器)

(用于控制串行通信的方式选择、接收和发送,指示串口的状态)

IE(中断允许控制寄存器)

D7D6D5D4D3D2D1D0
EA ET2ESET1EX1ET0EX0

 

EA:中断总允许位(相当于总开关)

(D5~D0相当于分开关)

ET2:T2中断允许位

ES:串行中断允许位

ET1: T1中断允许位

EX1: 外部中断1允许位

ET0: T0中断允许位

EX0: 外部中断0允许位

IP(中断优先控制寄存器)

IP用来设定各个中断源属于两级中断(51单片机中断优先级为二级)的哪一级(52为三级)

先依据几级中断优先级、再依据自然优先级来给中断优先级排顺序。

自然中断优先级:INT0 T0 INT1 T1 串行口 T2(52才有)

2.中断处理的过程

由中断源提出中断请求,再查找中断入口地址、判别中断优先级别,CPU执行完当前一条指令,再判别是否允许中断,若允许,则清除中断标志,保护现场,然后执行中断服务指令,程序结束后返回到断点现场,继续执行原程序。若不允许,则CPU执行下一条指令,再判别是否允许中断,然后如上。

保护现场:保存原主程序下一个将要执行的指令地址,将其送入堆栈。(执行完中断程序后,能正确返回断点处继续执行原来的程序)通过PUSH压栈指令将程序计数器、PSW、累加器A等寄存器的内容压入堆栈来实现。

3.汇编例子

用中断的方法控制LED灯的三个状态

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA77iP5qKF6Iqx5Y2B5LiJ,size_20,color_FFFFFF,t_70,g_se,x_16

 

		ORG 0000H  
		AJMP MAIN

		ORG 0013h
		AJMP KEY

MAIN:	LCALL CSH

MAIN1:	LCALL LOOP
		AJMP MAIN1

CSH:	MOV R7,#0
		SETB IT1    
		SETB EA      
		SETB EX1
		RET
LOOP:	CJNE R7,#0,LOOP1
		MOV P2,#0FH
LOOP1:	CJNE R7,#1,LOOP2
		MOV P2,#0F0H
LOOP2:	CJNE R7,#2,LEND
		MOV P2,#33H
LEND:	RET

KEY:	INC R7
		CJNE R7,#3,KEND
		MOV R7,#0
KEND:	RETI
		END

中断控制数码管显示数加减

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA77iP5qKF6Iqx5Y2B5LiJ,size_20,color_FFFFFF,t_70,g_se,x_16

	ORG 0000H
	AJMP MAIN
	ORG 0003H
	AJMP KEY1
	ORG 0013H
	AJMP KEY2
MAIN:	LCALL CSH
MAIN1: LCALL BCD
	   LCALL SMG
	   AJMP MAIN1
CSH:	MOV R7,#123
		MOV TCON,#05H
		MOV IE,#85H
		RET
BCD:	MOV 30H,#0
		MOV A,R7
		MOV B,#100
		DIV AB
		MOV 31H,A
		MOV A,B
		MOV B,#10
		DIV AB
		MOV 32H,A
		MOV 33H,B
		RET
SMG:	MOV	R6,#4
		MOV R5,#0FEH
		MOV R0,#30H
		MOV DPTR,#TAB
LOOP:	MOV P2,R5
		MOV A,@R0
		MOVC A,@A+DPTR
		MOV P0,A
		LCALL DELAY
		MOV P2,#0FFH
		MOV A,R5
		RL A
		MOV R5,A
		INC R0
		DJNZ R6,LOOP
		RET
KEY1:	INC	R7
		RETI
KEY2:	DEC R7
		RETI
DELAY:	MOV R4,#15
		DJNZ R4,$
		RET
TAB:	DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

		END

 

 

 

  • 13
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️梅花十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值