80C51中断系统的组成
-
TCON寄存器(Timer/Counter Control Register)
TCON为定时/计数器控制寄存器
-
SCON寄存器(Serial Control Register)
SCON为串口寄存器
-
IE寄存器(Interrupt Enable Register)
IE为中断允许寄存器
-
IP寄存器(Interrupt Priority Registers)
IP为中断优先级寄存器
电路图
要求
- 无任何操作时D0 ~ D7全亮
- 按下k1后松开时,D0 ~ D3,D4 ~ D7持续交替亮灭
完整程序
#include<reg51.h>
sbit k1=P3^2;
void delay(unsigned int a)
{
while(a--);
}
void main()
{
EA=1;//打开中断总允许
EX0=1;//外部中断0开关闭合
// IE0=1;//中断请求标志位,由硬件直接处理,这句可以省略不写
IT0=0;//中断触发方式选择,IT0=1边沿触发,IT0=0电平触发
P1=0x00;//led全亮
}
//中断函数无需在main前声明,也不能在main中被调用
void ex_interrupt() interrupt 0 //中断函数 void 函数名 (void) interrupt n (using m) {函数体语句}
{
//n为中断号 m寄存器组编号
if(k1==0) //k1被按下
{
delay(10);//消抖
if(k1==0)
{
while(1)//一直执行,不会跳出中断函数
{
P1=0x0f;//0000 1111
delay(30000);
P1=0xf0;//1111 0000
delay(30000);
}
}
}
}