void init_port(void);
void outport(char);
void show_digits( void);
void delay1(int);
void outportc( char );
void delay2( void );
void setup() {
init_port();
show_digits();
}
;
void show_digits()
{
int i,k;
char ones, tens,huns, tsds;
char digit[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
while(1)
{
outportc(0x00);
for(i=0; i<10000; i++)
{
ones = i%10;
tens = (i/10)%10;
huns = (i/100)%10;
tsds = i/1000;
for(k=0; k<100; k++)
{
outport(~digit[ones]);
outportc(0x08);
delay1(1);
outportc(0x00);
outport(~digit[tens]);
outportc(0x04);
delay1(1);
outportc(0x00);
outport(~digit[huns]);
outportc(0x02);
delay1(1);
outportc(0x00);
outport(~digit[tsds]);
outportc(0x01);
delay1(1);
outportc(0x00);
}
}
}
}
void init_port()
{
char *portb_dir = (char *)0x24;
char *portd_dir = (char *)0x2A;
char *portc_dir = (char *)0x27;
*portb_dir = 0x0F;
*portd_dir = 0xF0;
*portc_dir = 0x03;
}
void outport( char out_data)
{
char *portb_data = (char *)0x25;
char *portd_data = (char *)0x2B;
*portb_data = out_data >> 4;
*portd_data = out_data << 4;
}
void outportc( char out_data)
{
char *portc_data = (char *)0x28;
*portc_data = out_data;
}
void delay1(int count)
{
volatile long i;
while(count)
{
for(i=0; i<1000; i++);
count--;
}
}
void delay2( void )
{
volatile long i;
for(i=0; i<100; i++);
}
void loop() {
}