CT107D竞赛板外部中断的基础应用
外部中断的含义
外部中断是单片机实时地处理外部事件的一种内部机制。
当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,
转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。
使用前将J5并到2,3脚,即S5按键接到P32/INT0,S4按键接到P33/INT1
使用方法
- 中断源
- 掌握特殊寄存器
- 中断模板
中断源
该板有5个中断源 中断优先级从0~4
中断号 中断源名称 编号
0 外部中断0 INT0
1 定时/计数器0 TF0
2 外部中断1INT1
3 定时/计数器1 TF1
4 串口中断 R1/T1
掌握特殊寄存器掌握特殊寄存器
使用方法寄存器使用方法(一般放在中断初始化函数)
使用中断0时,在IE寄存器要将EA(总开关)使能 还要将EX0使能
然后在TCON寄存器选择触发方式
若要调整优先级就需使用IP寄存器
中断模板中断模板
中断服务函数内要少放驱动程序否则会影响实时性
具体代码:
点击查看代码
#include<STC15F2K60S2.H>
sbit L1 =P0^0;
sbit L8 =P0^7;
void Delay(unsigned int t)
{
while(t--);
while(t--);
while(t--);
}
void SelectHC573()
{
P2 = (P2 & 0x1f) | 0x80;
}
void Working()
{
SelectHC573();
L1 = 0;
Delay(60000);
L1 = 1;
Delay(60000);
}
//====================================
void Init_INT0()
{
IT0 = 1;
EX0 = 1;
EA =1;
}
void ServiceINT0() interrupt 0
{
L8 =0;
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
L8 =1;
}
//====================================
void main()
{
Init_INT0();
while(1)
{
Working();
}
}
减少中断函数的写法
点击查看代码
#include<STC15F2K60S2.H>
sbit L1 =P0^0;
sbit L8 =P0^7;
void Delay (unsigned int t)
{
while(t--);
while(t--);
while(t--);
}
void SelectHC573 ()
{
P2 = (P2 & 0xaf) | 0x80;
}
void Working ()
{
SelectHC573 ();
L1 = 0;
Delay(60000);
L1 = 1;
Delay(60000);
}
unsigned char hao = 0;
//============================
void Init_INT0 ()
{
IT0 = 1;//外部中断触发方式选择
EX0 = 1;//IE寄存器使能
EA = 1;//总中断开关
}
void ServiceINT0 () interrupt 0
{
hao =1;
}
void LED ()
{
if(hao == 1)
{
L8 = 0;
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
L8 = 1;
}
hao = 0;
}
//============================
void main ()
{
Init_INT0 ();
while(1)
{
Working ();
LED ();
}
}