#include<reg51.h>
int sem_segment[10];			//Объявляем массив кодов семисегментных индикаторов
int tsifra;				//Объявляем переменную, в которую будем помещать цифру для вывода
int chislo[8];				//Объявляем массив цифр выводимого на индикатор числа
int znakomesto,i;
void init (void)
{
sem_segment[0]=0xfc;			//Заносим в массив коды соответствующих цифр
sem_segment[1]=0x60;
sem_segment[2]=0xda;
sem_segment[3]=0xf2;
sem_segment[4]=0x66;
sem_segment[5]=0xb6;
sem_segment[6]=0xbe;
sem_segment[7]=0xe0;
sem_segment[8]=0xfe;
sem_segment[9]=0xf6;
SCON=0;					//Настраиваем последовательный порт на режим регистра сдвига
TMOD=0x01;
TH0=(-10000)>>8;
TL0=-10000;
TF0=0;
TR0=1;
IE=(1<<7)|
   (1<<1);
}
void prerT0 (void) interrupt 1
{
chislo[3]=5;
}
void vyvod (void)
{
P1=0x0f;
tsifra=chislo[znakomesto];
TF0=0; 					//Сбрасываем флаг пересылки
SBUF=sem_segment[tsifra];
while(TI==0);
for(i=7;i>0;i--)
P1=znakomesto;
}
void main (void)
{
init();					//Вызов функции init
znakomesto=0;
chislo[znakomesto]=1;			//Число для вывода
for(;;)
{
for(znakomesto=0;znakomesto<7;znakomesto++)
vyvod();
}
}

