×
单片机 > 单片机程序设计 > 详情

AT89S52抢答器程序

发布时间:2020-08-25 发布时间:
|
那是我自己写的简易抢答器,key1按下数码管显示1,同时发光二级管第1个闪动;key2按下数码管显示2,同时发光二级管第2个闪动; key3按下数码管显示3,同时发光二级管第3个闪动; key4 按下数码管显示4,同时发光二级管第4个闪动;

#include"reg51.h"
#define uchar unsigned char

sbit wi=P2^7;
   sbit key4= P3^3;
   sbit key1= P3^0;
   sbit key2= P3^1;
   sbit key3= P3^2;

uchar display_code[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void delay(int n)  //延时
 { 
  uchar i;
  for(i=200;i>0;i--)
  for(;n>0;n--);
 }

void inkey()
{
 key1=1;
   if(key1==0)
     {
      delay(10);
     if(key1==0) 
      {
       while(1)
        {
         
        wi=0;
        //light=0;
         delay(3500);
         wi=1;
         //light=1;
         delay(3500);
        P0=display_code[1];
         }
         
     while(key1==0);
      }
  }
   key2=1;
   if(key2==0)
     {
      delay(10);
     if(key2==0) 
      {
       while(1)
        {
         P2=0Xbf;
         delay(6500);
         P2=0Xff;
         delay(6500);
     P0=display_code[2];
         }
          
     while(key2==0);
      }
     }
  key3=1;
   if(key3==0)
     {
      delay(10);
     if(key3==0) 
      {
       while(1)
        {
        
        P2=0Xdf;
         delay(6500);
         P2=0Xff;
         delay(6500);
       P0=display_code[3]; 
         }
         
     while(key3==0);
      }
    }
  key4=1;
   if(key4==0)
     {
      delay(10);
     if(key4==0) 
      {
       while(1)
        {
          
        P2=0Xef;
         delay(6500);
         P2=0Xff;
         delay(6500);
        P0=display_code[4];
         }
         
     while(key4==0);
      }
     }
}

void main()
{
 while(1)
 {
  inkey();

  }
}

/////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////

 ///////我觉得有问题.是因为同时按下俩个键时,就出现第1个前面的第1个程序..



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码