C51单片机学习(实验)
外部中断
Pertues仿真图
C程序
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay_ms(uchar num)
{
uint i,j;
for(i=0;i<num;i++)
for(j=0;j<5000;j++);
}
uchar led_table[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfc,0xf8,0xf0,
0xe0,0xc0,0x80,0x00,
};
void main()
{
uchar i;
//1、EINT0设置为低电平触发
IT0=1;IT1=0;
//2、使能EINT0
EX0=1;EX1=1;
//3、使能全局中断
EA=1;
//4、将EINT0设置为低优先级中断
PX0=1;PX1=0;
while(1)
{
for(i=0;i<8;i++)
{
P2=led_table[i];
delay_ms(25);
}
P2=0xFF;
}
}
void eint0_isr() interrupt 0
{
uchar i;
for(i=8;i<16;i++)
{
P0=led_table[i];
delay_ms(25);
}
P0=0xFF;
}
void eint1_isr() interrupt 2
{
uchar i;
for(i=8;i<16;i++)
{
P1=0x00;
delay_ms(25);
P1=0xFF;
delay_ms(25);
}
}