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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

編程不理想,求幫忙看看

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:113369 發(fā)表于 2016-5-20 21:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
50黑幣
功能:(1)一個(gè)能進(jìn)行拔河游戲的電路。
(2)電路使用15個(gè)發(fā)光二極管,開機(jī)后只有中間一個(gè)發(fā)亮,此即拔河的中心點(diǎn)。
(3)游戲雙方各持一個(gè)按鈕,迅速地、不斷地按動(dòng),產(chǎn)生脈沖,誰按得快,亮點(diǎn)就向誰的方向移動(dòng),每按一次,亮點(diǎn)移動(dòng)一次。
(4)亮點(diǎn)移到任一方終端二極管時(shí),這一方就獲勝,此時(shí)雙方按鈕均無作用,輸出保持,只有復(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)                  //延時(shí)子程序
{
    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鍵按下時(shí),向左移,不是理想中的向右移
2.數(shù)碼管顯示有問題

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美一区二区三区久久 | 日韩一二区 | a在线观看 | 欧美电影免费观看 | 亚洲精品久 | 国内精品久久久久久久影视简单 | 国产精品视频网站 | 色嗨嗨| 99久久99久久精品国产片果冰 | 亚洲精品一区久久久久久 | 国产97色 | 精品一二三区在线观看 | av在线一区二区三区 | 成人h电影在线观看 | 国产成人网| 狠狠操狠狠操 | 精品欧美乱码久久久久久 | 免费久久久 | 国产乱码精品一区二区三区忘忧草 | a黄毛片 | 涩涩视频在线观看免费 | 国产传媒视频在线观看 | 国产99久久 | 日韩视频专区 | 国产福利精品一区 | 2018天天干天天操 | 亚洲欧美另类在线 | 欧美一区二区三区精品免费 | 日日网 | 日韩高清一区 | 亚洲欧洲成人av每日更新 | 免费在线黄色av | 中文字幕第一页在线 | 日本成人在线观看网站 | 国产目拍亚洲精品99久久精品 | 色欧美片视频在线观看 | 一区二区蜜桃 | 羞羞视频在线观看 | 玖玖在线精品 | av在线一区二区三区 | 91玖玖|