51单片机:外部中断0的流水灯控制

使用基于外部中断0的流水灯控制
主程序功能:六个数码管依次显示123456;
外中断0功能:使流水灯从上到下依次点亮,间隔0.5s;

要求很清楚了啊,还等什么呢,赶快做吧。

这个应该可以吧

img

img

#include<reg51.h>
unsigned char code dis_tab [10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char code dis_bit [6]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
void delay_nms(unsigned char i)
{
unsigned char j;
for(;i!=0;i--)
{
for(j=0;j<123;j++);
}
}
void timer0_() interrupt 0
{
TCON=0x00;
P1_0=0;
delay_nms(500);
P1_1=0;
delay_nms(500);
P1_2=0;
delay_nms(500);
P1_3=0;
delay_nms(300);
P1_4=0;
delay_nms(300);
P1_5=0;
delay_nms(500);
P1_6=0;
delay_nms(500);
P1_7=0;
delay_nms(500);
}

void main ()
{
unsigned char i;
TCON=0x00;
EA=1;
EX0=1;
P0=0xFF;
while(1)
{
for(i=0;i<6;i++)
{
P2=dis_bit[i];
P0=dis_tab[i+1];
delay_nms(5);
}
}
}