基于51单片机的篮球24秒倒计时器

  • 格式:doc
  • 大小:15.50 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的篮球24秒倒计时器

#include <>

#define uchar unsigned char

sbit wei0=P1^0;

sbit wei1=P1^1;

sbit wei2=P1^2;

sbit gnd=P2^5;

sbit key2=P2^0;

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,数据就会存在随机存贮器中。

void delayms(int x)

{

int y,z;

for(y=x;y>0;y--)

for(z=110;z>0;z--);

}

void display(int dat)

{

uchar bai,shi,ge;

bai=dat/100;

shi=dat%100/10;

ge=dat%10;

wei0=0;

P0=table[bai];

delayms(1);

wei0=1;

wei1=0;

P0=table[shi]&0x7f;

delayms(1);

wei1=1;

wei2=0;

P0=table[ge];

delayms(1);

wei2=1;

P0=0xff; //这一句和下一句是为了降低数码管亮度,同学们不必写。

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); }