久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1804|回復: 4
打印 上一主題 下一主題
收起左側

基于單片機的8位搶答器程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:942522 發表于 2022-3-21 17:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大佬,這是8位搶答器
目前能實現的功能是:1.按下開始鍵,開始倒計時10秒(倒計時時間暫停)
                                2.若有人搶到,蜂鳴器響一聲,然后開始20秒答題倒計時
                                3.倒計時5秒鐘蜂鳴器響
                                4.若選手答對,則按加鍵給選手加分
                                5.若選手答錯,則主持人按繼續鍵,選手們繼續搶答
紅色字體部分就是我目前遇到的困難,懇請各位大佬幫忙出出招。
感謝!感謝!萬分感謝!
單片機程序如下:
#include<reg51.h>
sbit key1=P0^0;
sbit key2=P0^1;
sbit key3=P0^2;
sbit key4=P0^3;
sbit key5=P0^4;
sbit key6=P0^5;
sbit key7=P0^6;
sbit key8=P0^7;
sbit k1=P3^6;
sbit k2=P3^7;
sbit k3=P3^3;
sbit wy=P3^4;
sbit wk_key=P3^5;
sbit ghr_key=P3^2;
bit qd_hd,speaker_permit;
bit grade_hxj;
unsigned char duanma[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char fenshu[10]={0,0,0,0,0,0,0,0,0,0};
unsigned char weima[6]={0x01,0x02,0x04,0x08,0x10,0x20};
unsigned char xianshi[6]={0,0,0,0,0,0};
unsigned char  saomiao_jishu,jishu2,zuhao=0,f_speaker;
unsigned char miao,fen;

void chushihua (void)               
  {
    zuhao=0;                                //組號  顯示 0,
        TMOD=0X11;                                       
        EA=1;                                                //設置初值;計時為0。            
        ET1=1;TR1=1;
        ET0=1;TR0=1;
        TH1=(65536-1000)/256;
        TL1=(65536-1000)%256;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        jishu2=0;
        grade_hxj=0;
        qd_hd=0;
        speaker_permit=1;
  }
void dtsm(void)           //動態掃描子程序
  {
                 
         fen=fenshu[zuhao] ;
                 xianshi[0]=duanma[zuhao/10];
                 xianshi[1]=duanma[zuhao%10];
                 xianshi[2]=duanma[miao/10];
                 xianshi[3]=duanma[miao%10];
                 xianshi[4]=duanma[fen/10];
                 xianshi[5]=duanma[fen%10];
                      saomiao_jishu++;
                      if(saomiao_jishu==6)
                        {
                                  saomiao_jishu=0;
                                }
                  P2=  weima[saomiao_jishu];//位碼
                      P1=xianshi[saomiao_jishu];//段碼  
                           
  
  }
void preemptive_answer(void)                 //搶答子程序
{
if(qd_hd==0)                                                 //允 許 搶 答           
                            {
                                if(key1==0)                                
                               {                                                                                
                                zuhao=1; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                                  
                                         }   
                                  if(key2==0)           
                                         {
                                     zuhao=2; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                         }
                  if(key3==0)   
                                           {                        
                                zuhao=3; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                               }                     
                                     if(key4==0)
                                           {                        
                                zuhao=4; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                               }                     
                                  if(key5==0)           
                                         {  
                                     zuhao=5; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                         }  
                                    if(key6==0)
                                           {                        
                                zuhao=6; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                               }                     
                                  if(key7==0)           
                                         {  
                                     zuhao=7; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                         }  
                  if(key8==0)                                
                               {
                                zuhao=8; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;                    
                                         }
                                }           
                   if(k3==0)         //按下開始鍵
                                           {
                                          miao=10;qd_hd=0 ;

                                         }                                                  
if(qd_hd==1)       //計 數   
       {
                              
                   jishu2++;                                                  
           if(jishu2==100)                                          
          {
               jishu2=0;                                          
                   miao--;
                   if((miao<=19)&&(miao>=6))        
                           {                                 
                   speaker_permit=1;
                           }
                   if((miao<=5)&&(miao>=1))speaker_permit=0;                                                  
                   if(miao==0xff)
                     {miao=0;
                         speaker_permit=1;}                  
             }
       }

                         if(wk_key==0)                                //復 位
                              {
                       zuhao=0;
                     miao=0;
                   qd_hd=0;
                     fen=0;
                     grade_hxj=0;   
                              }
if(grade_hxj==1)
                   {
                        if(k1==0)                                //加 分
                              {
                      fenshu[zuhao]=fenshu[zuhao]+1;
                    fen=fenshu[zuhao];
                    while(k1==0);
                                        }   
                 }                                    
}
void zd(void) interrupt 3                        //蜂鳴 (中斷)
{
    TH1=(65536-8000)/256;
    TL1=(65536-8000)%256;
         jishu2++;                                                  
           if(jishu2==100)                                          
          {
               jishu2=0;                                          
                   miao--;
                   if(miao==0xff)miao=0;
                  }
                   if(miao==0)qd_hd=1;
        dtsm();
                preemptive_answer();         
}
void zd1(void) interrupt 1                //蜂鳴(中斷)
{
    TH0=(65536-1000)/256;
    TL0=(65536-1000)%256;
  if(speaker_permit==0)
        {
                ghr_key=~ghr_key;
    }
  if(wy==0)
                {
                 zuhao++;
                         if(zuhao==9)
                                {
                                 zuhao=0;
                                 fen=fenshu[zuhao] ;
                                }
                         while(wy==0);
            }               
}

void main(void)        
  {         
     chushihua();           
         while(1);
  }



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2022-3-21 18:14 來自手機 | 只看該作者
不加注釋,變數名又沒意義,誰看得懂?
回復

使用道具 舉報

板凳
ID:57657 發表于 2022-3-21 20:25 | 只看該作者
lkc8210 發表于 2022-3-21 18:14
不加注釋,變數名又沒意義,誰看得懂?

新人貼的程序不要看,框架太亂,代碼都是東拼西湊來的,直接從頭寫吧。
回復

使用道具 舉報

地板
ID:161164 發表于 2022-3-21 21:25 | 只看該作者
npn 發表于 2022-3-21 20:25
新人貼的程序不要看,框架太亂,代碼都是東拼西湊來的,直接從頭寫吧。

幫到一個算一個
當然無法救的就。。。
回復

使用道具 舉報

5#
ID:844772 發表于 2022-3-22 09:54 | 只看該作者
我覺得你程序改一下結構比較好,把對鍵盤和顯示的輪詢放到主程序,時間中斷只管計時,蜂鳴器換個有源的,你居然用兩個中斷搞它太沒必要,當然主要是這個中斷問題有點多。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文av电影| 伊人看片 | 三级成人在线 | www亚洲精品 | 成人免费观看男女羞羞视频 | 日韩高清一区 | av黄色片在线观看 | 黄网免费看 | 亚洲一区二区av | 精品视频在线观看 | 亚洲一区二区精品视频 | 少妇诱惑av | 欧美一级三级 | 国产精品观看 | 亚洲成人第一页 | 欧美福利在线 | 欧美一区二区三 | 91 在线| 欧美日韩国产不卡 | 久久久区| 不卡的av一区 | 亚洲视频一区在线观看 | 亚洲97 | 超碰在线影院 | 日韩av免费在线电影 | 亚洲一区视频 | 欧美福利精品 | 午夜视频网站 | 亚洲精品一区二区在线观看 | 亚洲精品www| 成人久久18免费网站 | 国产亚洲网站 | 在线观看视频一区二区三区 | 热久久999| 一区二区三区中文字幕 | 欧美久久综合 | 男女激情网 | 天天干天天操天天射 | 玖玖视频网 | 91成人在线视频 | 国产成人艳妇aa视频在线 |