#include<iom16v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
#define set_pc6 PORTC|=BIT(6)
#define set_pd7 PORTD|=BIT(7)
#define set_pc1 PORTC|=BIT(1)
#define set_pc0 PORTC|=BIT(0)
#define clr_pc6 PORTC&=~BIT(6)
#define clr_pd7 PORTD&=~BIT(7)
#define clr_pc1 PORTC&=~BIT(1)
#define clr_pc0 PORTC&=~BIT(0)
#pragma interrupt_handler count:9
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar ge,shi,bai,qian,num;
void count(void)
{
num++;
TCNT1H=0X85;
TCNT1L=0XED;
if(num==60)
num=0;
ge++;
if(ge==10)
{
ge=0;
shi++;
if(shi==10)
{
shi=0;
bai++;
if(bai==10)
{
bai=0;
qian++;
if(qian==10)
{
qian=0;
}
}
}
}
}
void main(void)
{
DDRA=0XFF;
DDRB=0XFF;
DDRC=0XFF;
DDRD=0XFF;
TCCR1B=0X04;
TCNT1H=0X85;
TCNT1L=0XED;
TIMSK|=BIT(2);
SREG|=BIT(7);
while(1)
{
set_pc0;
PORTA=table[ge];
delay(5);
clr_pc0;
set_pc1;
PORTA=table[shi];
delay(5);
clr_pc1;
set_pd7;
PORTA=table[bai];
delay(5);
clr_pd7;
set_pc6;
PORTA=table[qian];
delay(5);
clr_pc6;
}
} |