|
#include<iom16v.h>
#include<macros.h>
#define smgen_set PORTD |=BIT(6)
#define smgen_clr PORTD &=~BIT(6)
#define uchar unsigned char
#define uint unsigned int
uchar table2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
uchar table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar table[8]={0,0,0,0,0,0,0,0};
uchar num;
void init(void) //数码管初始化
{
DDRA=0XFF;
PORTA=0x0;
DDRC=0XFF;
PORTC=0x0;
DDRD=0XFF;
PORTC=0x0;
}
void init1(void) //定时器初始化
{
TCCR1B=0X04; //256分频
TCNT1H=0X8f;
TCNT1L=0X80;
TIMSK |=BIT(2);
SREG |=BIT(7);
}
void delay(uint t) //延时函数
{
uint b;
for(b=0;b<10;b++)
{
while(t--);
}
}
void display(uchar *p) //数码管显示函数
{
uchar i;
for(i=0;i<8;i++)
{
PORTA=table2[*p]; //段选
p++;
smgen_set; //开数码管
PORTC=table1[i]; //位选
delay(200);
}
}
void main()
{
init(); //数码管初始化
init1(); //定时器初始化
while(1)
{
display(table);
}
}
#pragma interrupt_hander timer_isr:9
void timer_isr(void)
{
num++;
if(num==60)
num=0;
table[0]=num%10;
table[1]=num/10;
TCNT1H=0X8f;
TCNT1L=0X80;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|