外部中断0(INT0)和外部中断1(INT1)均有两种触发方式:上升沿或下降沿均可触发方式和仅下降沿触发方式。
因为引脚的状态有0和1,0代表低电平,1代表高电平。从高电平变为低电平,这种电平突然下降的地方叫做下降沿;从低电平变为高电平,这种电平突然上升的地方叫做上升沿。
TCON中的IT0和IT1分别决定了INT0和INT1是哪种触发方式,如果ITx(x=0,1)=0,当系统在INTx(x=0,1)引脚检测到上升沿或下降沿均可触发外部中断;如果ITx(x=0,1)=1,当系统在INTx(x=0,1)引脚检测到下降沿时可触发外部中断。
以下是测试代码(效果为按下按键流水灯)
#include<STC15F2K60S2.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit led_sel=P2^3;
sbit key1=P3^2;
uchar led;
void Init()
{
P0M1=0x00;
P0M0=0xff;
P2M1=0x00;
P2M0=0xff;
EA=1; //打开总中断
EX0=1; //打开外部中断0
IT0=1; //设置为下降沿触发
led_sel=1;
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void main()
{
Init();
led=0x01;
while(1)
{
P0=led;
}
}
void ex0() interrupt 0
{
Delay10ms();
if(key1==0)
{
while(!key1);
if(led==0x80)
led=0x01;
else
led=led<<1;
}
}
(若有不足和错误,还请各位斧正)