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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我寫的程序選位加1之后全部都變了,怎樣加程序使他每個位置都獨立變化?

[復制鏈接]
跳轉到指定樓層
樓主
ID:69319 發表于 2015-7-7 01:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define INT16U unsigned int
sbit          K1 = P3^1;
sbit          K2 = P3^2;
sbit          K3 = P3^3;
sbit WEI0=P2^4;
sbit WEI1=P2^5;
sbit WEI2=P2^6;
sbit WEI3=P2^7;
unsigned char Time;
uchar Count=0;
unsigned char a,b,c,d;
unsigned char code XIANSHI[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//0x40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X18};//段碼
unsigned char code WEI[]={0X7F,0XBF,0XDF,0XEF};        //位碼
void Delay10ms(unsigned int c) ;
unsigned char Key_Scan();
void Timer();


void main(void)
{
unsigned char ledValue, keyNum;

        ledValue = 0x01;

        while (1)
        {       
                keyNum = Key_Scan();  //掃描鍵盤

                if (keyNum == 1) //如果鍵值返回1
                {
                        P0=0x40;
                        P2=0X0F;       
                }
                else if (keyNum == 2)//如果鍵值返回2
                {
                      a++;
              if(a==4)
                {
                  a=0;
                }

                  switch(a)
        {  
                  case 0:
                  WEI0 = 1;WEI1 = 1;WEI2 = 1;WEI3 = 0;
            //P2=0X7F;
            Delay10ms(1);
            break;
          case 1:
                   WEI0 = 1;WEI1 = 1;WEI2 = 0;WEI3 = 1;
           //P2=0XBF;
            Delay10ms(1);
            break;
          case 2:
                   WEI0 = 1;WEI1 = 0;WEI2 = 1;WEI3 = 1;
           //P2=0XDF;
            Delay10ms(1);
            break;
          case 3:
                   WEI0 = 0;WEI1 = 1;WEI2 = 1;WEI3 = 1;
           // P2=0XEF;
            Delay10ms(1);
            break;
                }
    }
         if (keyNum == 3)//如果鍵值返回3
        {   
          Timer();
         Count = Count+1;         
                if(Count>9) //【最大值】
                {
                        Count=0;
                }
        P0=XIANSHI[Count];
        }
}
}
unsigned char Key_Scan()
{
        unsigned char keyValue = 0 , i; //保存鍵值

        //--檢測按鍵1--//
        if (K1==0)                //檢測按鍵K1是否按下
        {
                Delay10ms(1);        //消除抖動

                if (K1==0)        //再次檢測按鍵是否按下
                {
                        keyValue = 1;
                        i = 0;
                        while ((i<50&&K1==0))         //檢測按鍵是否松開
                        {
                                Delay10ms(1);
                                i++;
                        }
                }
        }
        if (K2==0)                //檢測按鍵K2是否按下
        {
                Delay10ms(1);        //消除抖動

                if (K2==0)        //再次檢測按鍵是否按下
                {
                        keyValue = 2;
                        i = 0;
                        while ((i<50&&K2==0))         //檢測按鍵是否松開
                        {
                                Delay10ms(1);
                                i++;
                        }
                }
        }
        if (K3==0)                //檢測按鍵K3是否按下
        {
                Delay10ms(1);        //消除抖動

                if (K3==0)        //再次檢測按鍵是否按下
                {
                        keyValue = 3;
                        i = 0;
                        while ((i<50&&K3==0))         //檢測按鍵是否松開
                        {
                                Delay10ms(1);
                                i++;
                        }
                }
        }
        return keyValue;   //將讀取到鍵值的值返回
}
void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a, b;

        //--c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了--//
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }

        }      
}

   void Timer()
{
        TMOD = 0x01;     //定時器0選擇工作方式1
    TH0  = 0x3C;         //設置初始值,定時50MS
    TL0  = 0xB0;
    EA   = 1;             //打開總中斷
    ET0  = 1;                 //打開定時器0中斷
    TR0  = 1;                 //啟動定時器0       
}

void Timer0() interrupt 1
{       
        TH0 = 0x3C;         //設置初始值
        TL0 = 0xB0;
    Time++;
        if(Time == 20)
        {       
                Time = 0;
               
                }

}
這是程序和電路圖。我寫的程序選位加1之后全部都變了,怎樣加程序使他每個位置都獨立變化?


QQ拼音截圖未命名.png (14.6 KB, 下載次數: 123)

QQ拼音截圖未命名.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:81808 發表于 2015-7-7 09:54 來自手機 | 只看該作者
把電路圖傳上來吧,程序太長沒那么多時間一個一個看,跑起來就知道了

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:84959 發表于 2015-7-7 10:19 | 只看該作者
你這個的話,你可以使用下面的表達式參考下:個位:x%10  十位:x/10%10  百位:x/100%10  千位:x/1000%10

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:69319 發表于 2015-7-7 14:49 | 只看該作者
yanjibao 發表于 2015-7-7 09:54
把電路圖傳上來吧,程序太長沒那么多時間一個一個看,跑起來就知道了

大神幫我看一下謝謝了

新建文件夾 (2).rar

60.01 KB, 下載次數: 2

回復

使用道具 舉報

5#
ID:69319 發表于 2015-7-7 14:50 | 只看該作者
這是文件夾

新建文件夾 (2).rar

60.01 KB, 下載次數: 2

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区av | 欧美精品成人影院 | 亚洲人在线| 精品1区| 久久精品网 | 91精品国产自产精品男人的天堂 | 日韩欧美高清dvd碟片 | 国产高清一二三区 | 色婷婷影院 | 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美日韩国产高清视频 | 日本一区二区三区精品视频 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国产成人精品免高潮在线观看 | 中文字幕成人网 | 中日韩毛片 | 亚洲经典一区 | 欧美日韩在线免费 | 精品蜜桃一区二区三区 | 天天爽夜夜操 | 欧美日韩在线播放 | 成人国产精品视频 | 欧美日韩视频在线 | 国产资源在线观看 | 久久久精| 日韩精品一区二区三区在线播放 | 伊人狠狠| 国产成人一区二 | 99久久精品国产一区二区三区 | 亚洲视频在线一区 | 国产精品美女在线观看 | 亚洲一区二区三区免费视频 | 激情久久网 | 日韩成人免费视频 | 日韩免费看视频 | 久久91精品| 国产视频福利 | 午夜精品91 | 国产一区免费 | 天天狠狠 | 日韩一级精品视频在线观看 |