- #include <REG52.h>
-
-
sbit key_1=P3^2;
-
sbit key_2=P3^3;
-
//num为1延迟1ms,软件防抖延迟20ms
-
void Delay(unsigned int num)
-
{
-
unsigned int i,j;
-
for(i=0;i<num;i++)
-
for(j=0;j<1827;j++)
-
;
-
}
-
-
void interrupt_init()
-
{
-
IE=1<<7|1|1<<2;//第1,3,8位为1
-
TCON=1|1<<2;//第1,3位为1,负边沿触发
-
}
-
-
void out1() interrupt 0 using 1
-
{
-
Delay(2);//延迟20ms
-
if(key_1==0);
-
{
-
P0=0xf0;
-
}
-
}
-
-
void out2() interrupt 2 using 1
-
{
-
Delay(2);
-
if(key_2==0);
-
{
-
P0=0x0f;
-
}
-
}
-
-
int main()
-
{
-
interrupt_init();
-
while(1)
-
;
-
}
定时器中断时候,需要处理TMOD设置相关方式,TCON设置TR为1,允许计时,IE中设置EA和ET
外部中断时候,需要设置TCON中的IT为相应位,设置中断触发方式,TCON中的IE0和IE1是中断请求标志,由硬件置1和0
然后设置IE中的EA和EX