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

QQ登錄

只需一步,快速開始

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

單片機(jī)流水燈程序問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
各位大佬,我又來啦,想寫流水燈,可是運(yùn)行了燈只能從右到左閃爍,就結(jié)束了,不能從左到右,求指點(diǎn),謝謝!
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

#define led P2
u8 cnt=0;
u16 i=0;

void delay(u16 i)
{
        while(i--);
}
void main()
{
        
        while(1)
        {
        
                for(i=0;i<8;i++)
                {
            
                        led=~(0x80>>cnt);
                delay(50000);
                    cnt++;
                        
                 }
                for(i=0;i<8;i++)
                {
                   led=~(0x01<<cnt);
               delay(50000);
                   cnt++;
                  
                }
               
        }
        
}


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

使用道具 舉報(bào)

沙發(fā)
ID:413157 發(fā)表于 2020-2-9 20:21 | 只看該作者
#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include<intrins.h>                //因?yàn)橐玫阶笥乙坪瘮?shù),所以加入這個(gè)頭文件

typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;

#define led P2           //將P2口定義為led 后面就可以使用led代替P2口

/*******************************************************************************
* 函 數(shù) 名         : delay
* 函數(shù)功能                   : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);       
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{
        u8 i;
        led=0xfe;
        delay(50000); //大約延時(shí)450ms       
        while(1)
        {       
/*                for(i=0;i<8;i++)
                {
                        P2=~(0x01<<i);         //將1右移i位,然后將結(jié)果取反賦值到P2口
                        delay(50000); //大約延時(shí)450ms
                }
*/               
                for(i=0;i<7;i++)         //將led左移一位
                {
                        led=_crol_(led,1);
                        delay(50000); //大約延時(shí)450ms       
                }
                for(i=0;i<7;i++)        //將led右移一位
                {
                        led=_cror_(led,1);
                        delay(50000); //大約延時(shí)450ms       
                }       
        }               
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:67199 發(fā)表于 2020-2-9 21:29 | 只看該作者
cnt 沒回零,移位過頭了。加一句:
cnt=0;
for(i=0;i<8;i++)
                 {
                    led=~(0x01<<cnt);
                delay(50000);
                    cnt++;
                    
                }
回復(fù)

使用道具 舉報(bào)

地板
ID:423511 發(fā)表于 2020-2-9 21:31 | 只看該作者
把while(1)函數(shù)里程序的改為
while(1)
    {     
        cnt=0;                       
        for(i=0;i<8;i++)
        {
          led=~(0x80>>cnt);
          delay(50000);
          cnt++;                        
        }
        cnt=0;
        for(i=0;i<8;i++)
        {
          led=~(0x01<<cnt);
          delay(50000);
          cnt++;                  
        }   
就可以了。
回復(fù)

使用道具 舉報(bào)

5#
ID:473504 發(fā)表于 2020-2-9 22:06 | 只看該作者
就是cnt的清零問題,附件有圖說明。程序只加第一個(gè)cnt=0;會(huì)出現(xiàn)從左到右然后從右到左循環(huán)一次,接著就只會(huì)一個(gè)方向循環(huán)了,要加倆cnt=0;才行。

解答.PNG (47.85 KB, 下載次數(shù): 41)

解答.PNG

解答2.PNG (8.29 KB, 下載次數(shù): 53)

解答2.PNG
回復(fù)

使用道具 舉報(bào)

6#
ID:473504 發(fā)表于 2020-2-9 22:15 | 只看該作者
就是cnt清零的問題,如附件圖所示。

我的仿真是共陽的。程序那里只加一個(gè)cnt=0;流水燈只會(huì)出現(xiàn)一次左到右然后右到左的循環(huán),然后就只會(huì)一個(gè)方向循環(huán)了,加上倆才可以。
回復(fù)

使用道具 舉報(bào)

7#
ID:688693 發(fā)表于 2020-2-9 22:46 | 只看該作者
非常感謝各位,問題已經(jīng)解決啦,謝謝啦!
回復(fù)

使用道具 舉報(bào)

8#
ID:278448 發(fā)表于 2020-2-10 00:48 | 只看該作者
每個(gè)循環(huán)前,要把cnt清零。
回復(fù)

使用道具 舉報(bào)

9#
ID:692084 發(fā)表于 2020-2-11 15:20 | 只看該作者
其實(shí)您應(yīng)該搞一個(gè)數(shù)組比較好吧……
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表