求一个51单片机简单的中断C语言程序

比如8只流水灯循环点亮,然后中断触发后全部闪烁几下,响应中断完后继续恢复循环点亮。或者类似的程序都可以,我初学者,网上很多例子是汇编的,看不懂。我需要一个C语言的有中断的简单程序来参考下,希望有文字说明更加好,谢谢了啊~!

#include<reg52.h> //头文件
#define uint unsigned int //宏定义,如果你不嫌麻烦可以直接省略
#define uchar unsigned char
void delay(uint); //字程序声明
sbit D1=P1^0 ; //位定义 第一盏灯
sbit D2=P1^1 ; //第二盏,同上
sbit D3=P1^2 ; // 3
sbit D4=P1^3 ; // 4
sbit D5=P1^4 ; // 5
sbit D6=P1^5 ; // 6
sbit D7=P1^6 ; // 7
sbit D8=P1^7 ; // 8
void main() //函数主体
{ EA=1; // 打开中断总开关
EX0=1; //打开外部中断0,具体看你的单片机管脚
//默认的是电平中断while(1) //大循环
{
D1=0; //点亮第一盏
delay(500); //调用延时子程序,括号内为延时的长短,具体参阅FOR语句的使用
D2=0; //以下同第一盏
delay(500);
D3=0;
delay(500);
D4=0;
delay(500);
D5=0;
delay(500);
D6=0;
delay(500);
D7=0;
delay(500);
D8=0;
delay(500);
P1=0XFF;
delay(500); //全关+延时,详细参考位操作 }}
void delay(uint z) //子程序(延时的那个)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
void exter0() interrupt 0 //中断程序后所触发的内容 (中断程序不需要声明,直接写interrupt)
{
while(1)
{
P1=0X80; // 点亮所有
delay(300); // 延时
P1=0xff; // 熄灭所有
delay(300);
}
} 够详细吧,这要是不给分就没天理了,欢迎加我QQ305172985一起探讨,原创作品,谢绝抄袭程序绝对没问题 keil下显示" - 0 Error(s), 0 Warning(s).
温馨提示:答案为网友推荐,仅供参考