单片机六路抢答器C语言程序

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

单片机六路数显计时抢答器c语言程序#include

#define uint unsigned int

#define uchar unsigned char

unsigned char code

table[]={0xc0,0xf9,0xa4,

0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xc0};

sbit start=P3^6;

sbit reset=P3^7;

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^3;

sbit key5=P1^4;

sbit key6=P1^5;

sbit key7=P1^6;

sbit key8=P1^7;

sbit jia=P3^4;

sbit jian=P3^5;

bit action = 0;

uchar second=10,a[7]={0};

uchar timer0_count = 0;

uchar number=0;

uchar number_display = 0;

uchar k;

void delay(uint z)

{

uint x,y;

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

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

}

void display(uchar number,uchar second) {

P2 = 0x01;

P0 = table[second];

delay(1);

P2 = 0x02;

P0 = table[number];

delay(1);

P2 = 0x04;

P0 = table[a[0]];

delay(1);

P2 = 0x08;

P0 = table[a[1]];

delay(1);

P2 = 0x10;

P0 = table[a[2]];

delay(1);

P2 = 0x20;

P0 = table[a[3]];

delay(1);

P2 = 0x40;

P0 = table[a[4]];

delay(1);

P2 = 0x80;

P0 = table[a[5]];

delay(1);

}

void start_keyscan()

{

void fengling();

while(start == 0)

{

key7=0;

display(number_display,second);

if(start == 1)

{

key7=1;

action = 1;

TR0 = 1;

}

}

}

uchar key_scan8()

{

if(key1 == 0)

{

delay(8);

if(key1 == 0)

{

number = 1;

number_display = number;

}

}

if(key2 == 0)

{

delay(8);

if(key2 == 0)

{

number = 2;

number_display = number;

}

}

if(key3 == 0)

{

delay(8);

if(key3 == 0)

{

number = 3;

number_display = number;

}

}

if(key4 == 0)

{

delay(8);

if(key4 == 0)

{

number = 4;

number_display = number;

}

}

if(key5 == 0)

{

delay(8);

if(key5 == 0)

{

number = 5;

number_display = number;

}

}

if(key6 == 0)

{

delay(8);

if(key6 == 0)

{

number = 6;

number_display = number;

}

}

if(number_display != 0)

{

return number_display;

}

else

{

return 0;

}

}

void reset_keyscan()

{

if(reset == 0)

{

delay(8);

if(reset == 0)

{

number_display = 0;

second=10;

}

}

}

void main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=0;

P2=0x00;

while(1)

{

reset_keyscan();

start_keyscan();

if(jia==0&&a[number-1]<9)

{

delay(10);

while(jia==0)

display(number_display,second);

a[number-1]=a[number-1]+1;

}

if(jian==0&&a[number-1]>0)

{

delay(10);

while (jian==0)

相关文档
最新文档