/*一開始led0亮,再00~99 ,再按一下加1*/
#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];
int count=0;
unsigned char hi,lo;
unsigned char di=0;
unsigned int value;
sbit led0 = P2 ^ 0;
sbit sw1 = P3 ^ 2;
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)
{
count=c;
disp[0]=DATA_7SEG[count%10];/*取個位*/
disp[1]=DATA_7SEG[(count/10)%10]; /*取十位*/
disp[2]=DATA_7SEG[(count/100)%10];/*取百位*/
disp[3]=DATA_7SEG[count/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)
{
if(sw1==0)
{
count++;
if(count>99) count=0;
show_data(count);//你要丟到副程式才會動作
delay(20);while(sw1!=1);delay(20);
}
}
}
沒有留言:
張貼留言