蓝桥杯外部中断程序设计
一、寄存器介绍
1.中断允许寄存器IE(可位寻址)
名称 | 地址 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
---|---|---|---|---|---|---|---|---|---|
IE | A8H | EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 |
EA:CPU的总中断允许位 EA=1 中断开放
ELVD:低压检测中断允许位,ELVD=1中断允许
EADC:ADC中断允许位,EADC=1 允许ADC中断
ES:串行口1中断允许位,ES=1,允许串行口中断
ET1:定时/计数器 T1 的溢出中断允许位,ET1=1 允许T1中断
EX1:外部中断1中断允许位,EX1=1允许外部中断1(P3^3)
ET0:T0
EX0:外部中断0(P3^2)
2.定时/计数器中断控制寄存器TCON(可位寻址)
名称 | 地址 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
---|---|---|---|---|---|---|---|---|---|
TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
TF1:T1溢出中断标志,T1溢出时TF1由硬件置 1 ,CPU响应后置0,可软件查询。
TR1:T1的运行控制位,TR1=1时T1工作
TF0:T0溢出中断标志
TR0:T0的运行控制位
IE1:外部中断1(INT1/P3^3)中断请求标志,IE1=1时请求中断,CPU相应后,由硬件置0
IT1:外部中断源类型选择位,IT1=0 (INT1/P3^3)上升沿或下降沿触发中断,IT1=1 下降沿触发
IE0:外部中断0(INT0/P3^2)中断请求标志
IT0:外部中断源类型选择位
二、程序例程
sbit led1=P0^0;
void led_init()
{
P2=0x80; //译码器输出选择Y4 ,p27,p27,p25控制译码器输出
P0=0x00;
}
void close_buzz()
{
P2=0xa0; //ULN2003
P0=0x00; //主要是想关了蜂鸣器
}
void main(void)
{
close_buzz();
led_init();
EA = 1; //开启总中断
EX0 = 1; //允许外部中断0工作(P32,按键S5)
IT0 = 1; //设置触发方式(下降沿)
while(1);
}
void int_0(void) interrupt 0
{
led1=~led1; //led1反转
}