⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 liang.c

📁 是个简单的八路抢答器
💻 C
字号:
#include <reg51.h>
code unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x86};
unsigned char c;
unsigned char time;
unsigned char keynum;
 unsigned char i;
sbit speak=P3^7;
bit keyflag;
bit key=1;
bit b=1;

void delay()
{unsigned int m,n;
  for(m=0;m<2;m++)
   {
     for(n=0;n<200;n++);
        
           }
  }

void time0() interrupt 1 using 2
{
 if(c==20)
 { c=1;
   if(time)
   {
    --time;
     }
   else
   { 
     time=0X00;
     keyflag=0;
     for(i=0;i<50;i++)
       {speak=~speak;
         delay();}
     
     TR0=0;
     }
    P1=seg[time/10];
    P0=seg[time%10];
  }
 else
 ++c;
 
  TH0=15536/256;//T0初值,50ms中断一次
  TL0=15536%256;
 }


void int0() interrupt 0 using 2
{ 
    
   keyflag=1;
   b=0;
   time=30;
  for(i=0;i<50;i++)
       {speak=~speak;
         delay();}
  
 P1=seg[time/10];
 P0=seg[time%10];
  TR0=1;
 
  }



void main()
{
 unsigned char keystatus;

 speak=0;
 TCON=0X00;
 TMOD=0X01;
 TH0=15536/256;//T0初值,50ms中断一次
  TL0=15536%256;
 IE=0X83;

 while(1)
 {
  while(keyflag){
  P2=0Xff;
  keystatus=P2; 
  if(~keystatus)
  {
    for(i=0;i<50;i++)
       {speak=~speak;
         delay();}
   switch (keystatus){
     case 0xfe:keynum=1; break;
     case 0xfd:keynum=2; break;
     case 0xfb:keynum=3; break;
     case 0xf7:keynum=4; break;
     case 0xef:keynum=5; break;
     case 0xdf:keynum=6; break;
     case 0xbf:keynum=7; break;
     case 0x7f:keynum=8; break; 
     default : keynum=0;break;     
       }////switch
     if(keynum)
    { TR0=0;
      keyflag=0;
      
      P1=seg[keynum/10];
      P0=seg[keynum%10];
       }////////if(keynum)///////////////////
     }/////////if(~keystatus)////////////////
    }/////while(ketflag)
	while((key=1)&&(b))
{
  P2=0Xff;
  keystatus=P2; 
  if(~keystatus)
  {
    for(i=0;i<50;i++)
       {speak=~speak;
         delay();}
   switch (keystatus){
     case 0xfe:keynum=1; break;
     case 0xfd:keynum=2; break;
     case 0xfb:keynum=3; break;
     case 0xf7:keynum=4; break;
     case 0xef:keynum=5; break;
     case 0xdf:keynum=6; break;
     case 0xbf:keynum=7; break;
     case 0x7f:keynum=8; break; 
     default : keynum=0;break;     
       }////switch
     if(keynum)
    { TR0=0;
      keyflag=0;
      
      P1=seg[10];
      P0=seg[keynum%10];
       }////////if(keynum)///////////////////
     }/////////if(~keystatus)////////////////
    }
  }////while(1)
 }/////mian

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -