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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2719|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

編程不理想,求幫忙看看

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:113369 發(fā)表于 2016-5-20 21:32 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
50黑幣
功能:(1)一個能進(jìn)行拔河游戲的電路。
(2)電路使用15個發(fā)光二極管,開機(jī)后只有中間一個發(fā)亮,此即拔河的中心點(diǎn)。
(3)游戲雙方各持一個按鈕,迅速地、不斷地按動,產(chǎn)生脈沖,誰按得快,亮點(diǎn)就向誰的方向移動,每按一次,亮點(diǎn)移動一次。
(4)亮點(diǎn)移到任一方終端二極管時,這一方就獲勝,此時雙方按鈕均無作用,輸出保持,只有復(fù)位后才使亮點(diǎn)恢復(fù)到中心。
(5)用數(shù)碼管顯示獲勝者的盤數(shù)。
代碼
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela1=P3^0;
sbit wela2=P3^1;
sbit beep=P3^5;
sbit key=P3^4;               
sbit key1=P3^2;
sbit key2=P3^3;
uchar n,m,temp1,temp2,a,b,num;
uint n1=0,n2=0;
void key_init();
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
                    0x92,0x82,0xf8,0x80,0x90};
void delay(uchar z)                  //延時子程序
{
    uchar x,y;
        for(x=z;x>0;x--)
        for(y=120;y>0;y--);
}

void di(void)        //蜂鳴器
{
    beep=0;
        delay(100);
        beep=1;
}
void disp(uchar shi, uchar ge)        //顯示子程序

{
   wela1=0;
   P1=table[shi];

   delay(10);
   wela1=1;
   wela2=0;
   P1=table[ge];
   delay(10);
   wela2=1;
}
   void key_init()                //按鍵子程序
   {
     if(key==0)                                 //復(fù)位,按第一次復(fù)位,第二次開始
         {
           delay(5);
           if(key==0)
           {
             while(!key);
                 temp1=0x7f;
                 temp2=0xff;
                 di();
                 P0=temp1;
                 P2=temp2;
                 num++;

                 if(num==3)
                    num=0;
            }
          }
   if(num==2)
       {
                 if(key1==0)                //玩家1,燈左移
                 {
                   delay(5);
                   if(key1==0)
                   {
                      while(!key1);
                          if(temp1==0xff)                 //燈在P2口上

                         {
                            if(temp2==0xfe)                       
                           {
                                   temp2=0xff;
                               P2=temp2;
                                   temp1=0x7f;
                                   P0=temp1;
                             }
                                     if(temp2!=0xff)
                                   {
                                     temp2=_cror_(temp2,1);
                                     P2=temp2;
                                   }
                             }
                                 else                                        //燈在p0口

                                 {


                                 temp1=_cror_(temp1,1);
                                 P0=temp1;
                                 }
                                 a=1;                        //用于跳出P0==OXfe的循環(huán)
                           }
                         }

                if(key2==0)                                 //玩家2,燈右移
          {
                  delay(5);
                if(key2==0)
          {
                          while(!key2);
                  if(temp2==0xff)
              {
                         if(P0==0x7f)
                           {
                                   temp1=0xff;
                                   P0=temp1;
                                        temp2=0xfe;
                                   P2=temp2;
                         }
                         if(temp1!=0xff)
                   {
                    temp1=_crol_(temp1,1);
                         P0=temp1;
                   }
                 }
                 else
                 {
                    temp2=_crol_(temp2,1);
                 P2=temp2;
                 }
                 b=1;                                        //用于跳出P2==oxbf的循環(huán)
                   }
                  }
          }
       
        if(P0==0xfe&&a==1)                                //玩家1勝一次,n加1,用來顯示在數(shù)碼管上
         {
           num=0;
           n+=1;
           a=0;
         }
        if(P2==0xbf&&b==1)                           //玩家2勝一次,m加1,用來顯示在數(shù)碼管上
          {
           num=0;
           m+=1;
         b=0;
          }
         
         if(n==2||m==2)                                                        //有人先勝2次,蜂鳴器響
         {
         di();
         }
         }


                        void init()
                  {
                          P0=0x7f;
                          n1=0;
                          n2=0;
                          num=0;
                          n=0;
                          m=0;
                          }
                          void main()
                          {
                            init();
                                disp(n,m);
                                while(1)
                            {
                                  disp(n,m);
                                  key_init();
                                }
                          }
問題:

1.P2口的燈在key2鍵按下時,向左移,不是理想中的向右移
2.數(shù)碼管顯示有問題

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

使用道具 舉報

沙發(fā)
ID:113369 發(fā)表于 2016-5-22 23:18 | 只看該作者
本帖最后由 楊風(fēng)feeling 于 2017-7-11 21:42 編輯

已找到辦法解決。謝謝!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 四虎影视免费在线 | 国产精品日韩一区 | 一区二区三区国产 | 日韩国产中文字幕 | 亚洲成av人片在线观看 | 成年免费大片黄在线观看岛国 | 九七午夜剧场福利写真 | 国产一区 | 欧美日韩一区精品 | 男人天堂视频在线观看 | 在线国产一区二区 | 福利影院在线看 | 国产一区中文字幕 | 男女下面一进一出网站 | 日本一区二区高清不卡 | 亚洲精品一区二三区不卡 | 国产资源一区二区三区 | 成人精品国产免费网站 | 69电影网| 久久久久成人精品亚洲国产 | 国产在线一区观看 | 国产精品久久久久一区二区三区 | 国产中文| 免费在线观看一区二区三区 | 亚洲有码转帖 | 国产高清在线视频 | 国产精品精品久久久久久 | 日本亚洲欧美 | 天天综合成人网 | 日韩av在线中文字幕 | www.伊人.com | 欧美亚洲综合久久 | 亚洲黄色在线免费观看 | 国产在线中文字幕 | 欧美一区二区三区视频在线播放 | 天天色图 | www国产成人免费观看视频 | 四虎影院欧美 | 九九色综合 | 亚洲一区二区三区免费视频 | 欧美一级久久 |