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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

流星雨程序不懂請大家幫幫我吧

[復制鏈接]
跳轉到指定樓層
樓主
ID:67818 發表于 2014-11-1 00:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序在下面
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:67818 發表于 2014-11-1 00:38 | 只看該作者
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar abit=16; //流到哪位
uchar atimer0_n;
uchar code abit8[9]={1,2,4,8,16,32,64,128,0};
uchar nn;
char a,b,c,d;

main()
{        TMOD = 0x11;       
        TL0 = 0x00;                //2.5ms
        TH0 = 0xF7;       
        TF0 = 0;               
        TR0 = 1;       
        EA=1;ET0=1;
        while(1)
        {
         a=abit;
         if(a>7||a<0)
                a=8;
         b=abit-1;
         if(b>7||b<0)
                 b=8;
         c=abit-2;
         if(c>7||c<0)
                 c=8;
                 d=abit-3;
         if(d>7||d<0)
                 d=8;
       
               
        atimer0_n++;
        if(atimer0_n==255)
        atimer0_n=0;
        if(atimer0_n<5)
                P1=0xff-abit8[a];
        if(atimer0_n<40)
                P1=0xff-abit8[b];
        if(atimer0_n<150)
                P1=0xff-abit8[c];       
        if(atimer0_n<255)
                P1=0xff-abit8[d];       
        }
}

atimer0 () interrupt 1
{       
        TL0 = 0x00;                //50ms
        TH0 = 0x4C;
        nn++;
        if(nn==2)
        {
                nn=0;abit--;
                 if(abit==0)
                 abit=16;
        }

               
}
回復

使用道具 舉報

板凳
ID:67818 發表于 2014-11-1 00:41 | 只看該作者
while(1)后面就徹底看不懂了,我腦子有點笨呵呵,請大神耐心詳細解答在此先謝謝啦
回復

使用道具 舉報

地板
ID:1 發表于 2014-11-1 02:21 | 只看該作者
最好有電路圖
回復

使用道具 舉報

5#
ID:51348 發表于 2014-11-1 17:15 | 只看該作者
前面一段是排序,來排列最亮到最暗,總共4位,后面是給四個LED賦值進行占空比調整,其中a>7||a<0是16進制轉化為2進制,然后八位2進制按位進行或運算,主要是定位哪一位

評分

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

查看全部評分

回復

使用道具 舉報

6#
ID:67818 發表于 2014-11-1 22:05 | 只看該作者
T29 發表于 2014-11-1 17:15
前面一段是排序,來排列最亮到最暗,總共4位,后面是給四個LED賦值進行占空比調整,其中a>7||a

不懂你說的16進制轉換成2進制的意識,A不是被賦值為16嗎   IF(A>7||A<0)  還有A=8 B=8 C=8 D=8又是什么意識求老師耐心講解
回復

使用道具 舉報

7#
ID:51348 發表于 2014-11-2 03:05 | 只看該作者
本帖最后由 T29 于 2014-11-2 03:06 編輯

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar abit=16; //流到哪位
uchar atimer0_n; //主程序循環次數
uchar code abit8[9]={1,2,4,8,16,32,64,128,0};
uchar nn;
char a,b,c,d;

main()
{        TMOD = 0x11;        
        TL0 = 0x00;                //2.5ms
        TH0 = 0xF7;        
        TF0 = 0;               
        TR0 = 1;        
        EA=1;ET0=1;
        while(1)
        {
         a=abit;//初次賦值,中間賦值在定時,再次賦值在定時里
    //8次循環顯示,四位LED          abcd 00000000
          //                                         abc d0000000
          //                                           ab cd000000
          //                                             a bcd00000
          //                                                abcd0000
          //以上是a的值是16-8之間的變化,7-0是低四位加上退出四位,同時進行賦值給abcd進行占空比
         if(a>7||a<0)a=8;//在單片機里面,無符號數據小于0會變成最大值,也就是小于0會變成255
         b=abit-1;
         if(b>7||b<0)b=8;
         c=abit-2;
         if(c>7||c<0)c=8;
         d=abit-3;
         if(d>7||d<0)d=8;
        
               
        atimer0_n++;
        if(atimer0_n==255)
        atimer0_n=0;
        if(atimer0_n<5)P1=0xff-abit8[a];//256-128轉成2進制,0為亮,01111111時間最短循環5次,所以最暗
        if(atimer0_n<40)P1=0xff-abit8;//256-64轉成2進制,0為亮,10111111
        if(atimer0_n<150)P1=0xff-abit8[c]; //256-32轉成2進制,0為亮,11011111      
        if(atimer0_n<255) P1=0xff-abit8[d]; //256-16轉成2進制,0為亮,11101111  時間最長,最亮     
        }
}

atimer0 () interrupt 1
{        
        TL0 = 0x00;                //50ms
        TH0 = 0x4C;
        nn++;
        if(nn==2)
        {
                nn=0;abit--;
                 if(abit==0)abit=16;
        }

               
}


只能靠易會理解了,說不清楚呀
回復

使用道具 舉報

8#
ID:67818 發表于 2014-11-2 10:34 | 只看該作者
T29 發表于 2014-11-2 03:05
#include
#define uint unsigned int
#define uchar unsigned char

雖然現在還不能理解,但是過一段時間就會好的

因此對于您的解答我非常感謝!
回復

使用道具 舉報

9#
ID:67992 發表于 2014-11-3 10:31 | 只看該作者
[img][/img]
在if條件判斷中可以轉換進制嗎?可不可以賦值?比如if(i=8)?
回復

使用道具 舉報

10#
ID:67992 發表于 2014-11-3 10:36 | 只看該作者
求a>7||a<0是16進制轉化為2進制,設a=0和a=8時表達式的值為多少?
回復

使用道具 舉報

11#
ID:67992 發表于 2014-11-3 15:44 | 只看該作者
本帖最后由 dgahz 于 2014-11-4 10:09 編輯

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar abit=16;
uchar atimer0_n;
uchar code abit8[9]={254,253,251,247,239,223,191,127,255}; /*對應{11111110,11111101,11111011,11110111,11101111,
uchar nn;                                                                                       11011111,10111111,01111111,11111111} 0為燈亮,
char a,b,c,d;                                                                                 1為燈滅*/

main()
{        TMOD = 0x11;        
        TL0 = 0x00;          /*每進一次中斷abit變動一次。則 a,b,c,d 變動一次。
        TH0 = 0xF7;          取a,b,c,d 的值,值代表數組abit8[]元素的序號。相當P1口賦值相應元素。
        TF0 = 0;                while執行掃描50ms進一次中斷*/
        TR0 = 1;        
        EA=1;ET0=1;                        
        while(1)              /*   if(a>7||a<0)中“||”是或者的意思,即如果a>7或者a<0只要其中一個成立則條件成立,執行下面語句,否則跳過。
                                        當abit在16-11時:a=b=c=d=8. 燈全滅。
        {                              當abit=10:a=8,b=8,c=8,d=7.進一次中斷11111111,11111111,11111111,01111111
         a=abit;                    當abit=9: a=8,b=8,c=7,d=6.進一次中斷11111111,11111111,01111111,10111111
         if(a>7||a<0)            當abit=8: a=8,b=7,c=6,d=5.進一次中斷11111111,01111111,10111111,11011111
                a=8;                當abit=7: a=7,b=6,c=5,d=4.進一次中斷01111111,10111111,11011111,11101111
         b=abit-1;                 當abit=6: a=6,b=5,c=4,d=3.進一次中斷
                                        當abit=5: a=5,b=4,c=3,d=2.進一次中斷
                                        當abit=4: a=4,b=3,c=2,d=1.進一次中斷
         if(b>7||b<0)            當abit=3: a=3,b=2,c=1,d=0.進一次中斷
                 b=8;               當abit=2: a=2,b=1,c=0,d=8.進一次中斷
         c=abit-2;                 當abit=1: a=1,b=0,c=8,d=8.進一次中斷
         if(c>7||c<0)            當abit=0: a=0,b=8,c=8,d=8.進一次中斷
                                                        
                 c=8;                當abit在16-11時:滿足4個if條件,a=b=c=d=8;P1=abit8[8]=11111111,燈全滅。也就是說有
         d=abit-3;                  一段時間燈是不亮的。
         if(d>7||d<0)             當abit=0時:第1個條件不滿足,不執行a=8,則a=abit=0;后面3個條件b<0,c<0,d<0都滿足,
                 d=8;                 所以執行b=c=d=8.*/
        
               
        atimer0_n++;
        if(atimer0_n==255)        //假設某一次進中斷取得abit=7:則 a=7,b=6,c=5,d=4.則有如下:
        atimer0_n=0;
        if(atimer0_n<5)
                P1=abit8[a];      //P2=01111111    //255次循環中這句只執行了5次
        if(atimer0_n<40)
                P1=abit8;       //P2=10111111   //255次循環中這句只執行了40次
        if(atimer0_n<150)
                P1=abit8[c];   //P2=11011111   //255次循環中這句只執行了150次
        if(atimer0_n<255)
                P1=abit8[d];    //P2=11101111   //255次循環中這句只執行了255次
        }                                                           //執行的次數越多等效于燈亮的時間越長,每次循環視覺上4燈亮。

}                                           /*while一直重復執行到50ms結束再進中斷取得新的a,b,c,d值為止,abit變則相當于a,b,c,d值變。
                                              while執行255次則n同步等于255,50ms中能執行多少個255次不知道。*/
atimer0 () interrupt 1
{        
        TL0 = 0x00;                //50ms
        TH0 = 0x4C;
        nn++;
        if(nn==2)
        {
                nn=0;abit--;          //abit變化范圍16-0;
                 if(abit==0)
                 abit=16;
        }

               
}                                          //程序效果右移
回復

使用道具 舉報

12#
ID:67818 發表于 2014-11-3 22:55 | 只看該作者
好人啊謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91在线播放 | 欧美一区二区三区视频在线观看 | 综合二区 | 一级毛片免费看 | 精品视频国产 | 久久精品国产亚洲 | 国产综合精品一区二区三区 | 午夜影晥 | 欧美成ee人免费视频 | 国产精品福利网 | 国产在线播 | 天天操欧美 | 国产精品久久一区二区三区 | 日韩av在线播 | 男人天堂99| 日韩中文字幕 | 欧美性一区二区三区 | 拍拍无遮挡人做人爱视频免费观看 | 国产美女视频一区 | 国产精品一卡 | 一区二区免费视频 | 久久精品成人一区 | 久久国产精品久久 | 精品久久久久久久久久久久久久 | 久久久久久国产精品免费免费男同 | 午夜成人免费视频 | 一区二区三区亚洲 | 97日日碰人人模人人澡分享吧 | 91精品久久久久久久久中文字幕 | 日本综合在线观看 | 天天干狠狠干 | 精品在线一区二区三区 | 欧美一二精品 | 水蜜桃久久夜色精品一区 | 成人精品鲁一区一区二区 | 亚洲国产精久久久久久久 | 九九热精 | 在线观看国产 | 欧美不卡| 国产福利久久 | 久久久精品 |