中断的概念
中断源
名称 | 入口地址 |
---|---|
外部中断0(INT0(非))(P3.2) | 0003H |
定时器0溢出中断(T0) | 000BH |
外部中断1(INT1(非))(P3.3) | 0013H |
定时器1溢出中断(T1) | 001BH |
串行口中断(RX和TX) | 00023H |
TCON寄存器
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
-
IT0/IT1:外部中断0/1的中断
触发方式选择
:- 1:
沿边触发
,由1
到0
的下降沿有效; - 0:
电平触发
,低电平有效;
- 1:
-
IE0/IE1:外部中断0/1的
中断标志位
:- 1:发生中断;
- 0:未发生中断;
-
TR0/TR1:T0/T1
运行控制位
:- 1:运行;
- 0:不运行;
IE寄存器
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
EA | – | – | ES | ET1 | EX1 | ET0 | EX0 |
-
EX0/EX1:
外部中断0/1
的中断允许设置位:- 1:允许中断;
- 0:禁止中断;
-
ET0/ET1:
定时器中断T0/T1
的中断允许设置位:- 1:允许中断;
- 0:禁止中断;
-
ES:
串行口
的中断允许设置位:- 1:允许中断;
- 0:禁止中断;
-
EA:
中断允许总开关
设置位:- 1:允许总中断;
- 0:禁止总中断;
常考题型
例题1
题目描述
- 在下图中,正常情况下P1口所接的发光二极管
依次循环被点亮
(每次只有一个被点亮)。当SO按下时,产生中断
,此时8个发光二极管全亮——全暗交替出现8次
,然后恢复正常,用外部中断0
的中断来实现。
题解
ORG 000H
AJMP MAIN
ORG 0003H
AJMP EX00
ORG 0030H
MAIN:
SETB IT0 ;中断方式选择沿边触发
SETB EX0 ;设置允许外部中断
SETB EA ;打开中断允许总开关
MOV A, #0FEH ;设置初始值为1111 1110
LOOP:
MOV P1, A ;点亮不同的LED
ACALL DELAY ;进行延时
RL A ;A循环左移
SJMP LOOP ;一直循环,直到有中断
EX00:
MOV R0, #08H ;设置循环次数
AGA:
MOV P1, #00H ;LED全灭
ACALL DELAY ;进行延时
MOV P1, #0FFH ;LED全亮
ACALL DELAY ;进行延时
DJNZ R0, AGA ;判断循环是否结束
RETI ;子程序返回
DELAY:
MOV R3, #0FH
MOV R4, #OEH
DD:
DJNZ R4, $
DJNZ R3, DD
RET
END
代码解释
- 本题通过A的循环左移来控制8个LED的亮灭,具体过程如下:
- 本题目可当作模板记下;
题目后续更新…