#include <reg51.h>
unsigned code DATA_7SEG[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
unsigned code act[]={0xfe, 0xfd, 0xfb, 0xf7};
char disp[4];
unsigned char hi,lo;
unsigned char di=0;
unsigned int value;
sbit led0 = P2 ^ 0;
void delay(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<110;j++);
}
void init_t1()
{
value=65536-2000;
TH0=hi=value/256;
TL0=lo=value/256;
TMOD=0x01;
IE=0x82;
TR0=1;
}
void t0isr(void) interrupt 1
{
TH0=hi;
TH0=lo;
P0=disp[di];
P1=act[di];
di++;
if(di==4) di=0;
}
void init_buf()
{
int i;
for(i=0;i<4;i++)
disp[i]=DATA_7SEG[0];
}
void show_data(int c)
{
disp[0]=DATA_7SEG[c%10];/*取個位*/
disp[1]=DATA_7SEG[(c/10)%10]; /*取十位*/
disp[2]=DATA_7SEG[(c/100)%10];/*取百位*/
disp[3]=DATA_7SEG[c/1000]; /*取千位*/
}
void test_seg()
{
int i;
for(i=0;i<100;i++)
{
show_data(i);
delay(50);
}
}
void led()
{
int i;
for(i=0;i<1;i++)
{
led0=0;delay(2000);
led0=1;delay(2000);
}
}
main()
{
led();
init_t1();
init_buf();
test_seg();
while(1)
{
test_seg();
}
}
沒有留言:
張貼留言