1、基于51单片机的篮球24秒倒计时器 #include #define uchar unsigned charsbit wei0=P10;sbit wei1=P11;sbit wei2=P12;sbit gnd=P25;sbit key2=P20;uchar count;/用于记录发生了多少次中断的计数器uchar sec=240;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/注:用code是把后面的数据存在程序存贮器中,如果不用code,数据就
2、会存在随机存贮器中。void delayms(int x)int y,z;for(y=x;y0;y-) for(z=110;z0;z-);void display(int dat) uchar bai,shi,ge; bai=dat/100; shi=dat%100/10; ge=dat%10; wei0=0; P0=tablebai; delayms(1); wei0=1; wei1=0; P0=tableshi&0x7f; delayms(1); wei1=1; wei2=0; P0=tablege; delayms(1); wei2=1; P0=0xff; /这一句和下一句是为了降低数码
3、管亮度,同学们不必写。 delayms(20); void keyscan() if(key2=0) delayms(5);/延时消抖 while(!key2);/松手检测 TR0=TR0; void main() gnd=0; TMOD=0x01;/启用定时器0的工作方式1 TH0=(65536-50000)/256;/装初值 TL0=(65536-50000)%256;/装初值 EA=1;/打开总中断 ET0=1;/打开定时器0; TR0=0;/启动定时器0; while(1) keyscan(); /*if(count=2) count=0;sec-;if(sec=0)sec=240; */display(sec);void timer0 () interrupt 1/定时器0的中断优先等级是1 TH0=(65536-50000)/256;/重新装初值 TL0=(65536-50000)%256;/重新装初值 count+; if(count=2) count=0;sec-;if(sec=0)sec=240; /display(sec);