新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > c51循環(huán)移位的淺談

        c51循環(huán)移位的淺談

        作者: 時間:2016-11-18 來源:網絡 收藏
        如果學習單片機,最基本的考題就是流水燈了,呵呵,可是有時候一個很厲害的工程師,還真是不好弄出來,當然,我不是工程師,可是學習51單片機也有很長時間了,回想起當初學習51的時候,一直都是沒有自己的核心的東西,今天就談談c51循環(huán)移位的見解

        記得如果你打開intrins.h(51自帶的一個頭文件),你會發(fā)現(xiàn)其中有關于定義_crol_()(字符循環(huán)左移函數(shù))(一般我們用的多的是這個,呵呵),還有一個是_cror_()(字符循環(huán)右移函數(shù))

        本文引用地址:http://www.104case.com/article/201611/315830.htm

        可是,如果你去面試的時候,這個時候,你難道還用它自帶的循環(huán)函數(shù)么?當然不能了。真是的(有時候我們自己小組出的筆試題就是流水燈,可是我卻緊鎖眉頭,感覺很是窩囊。咳,今天就把源程序寫出來。)這時候就要用到你的c語言知識了,呵呵。

        假如說是共陰極數(shù)碼管的話:

        程序可以這樣(只寫主要算法):

        while(1)

        {

        temp=0x01;

        P1=temp;

        delay(100); //延時100ms

        for(i=1;i<8;i++)

        {

        temp=temp<<1;

        P1=temp;

        delay(100);

        }

        }

        可是假如是共陽極流水燈的話,就得寫成這樣,更好些:

        while(1)

        {

        temp=0xfe;

        P1=temp;

        delay(100);

        for(i=1;i<8;i++)

        {

        P1=(temp<>(8-i);

        delay(100);

        }

        }

        看到沒有,其中核心的一條語句就是 temp=temp<<1;P1=temp;和P1=(temp<>(8-i);,其實第一個可以用第二個代替,不過對于共陰極的太過簡單,直接寫出來就行了,可是對于共陽極的話,就得思考思考了,先左移,然后和右移的數(shù)進行相或,這是相當經典的(8次)。呵呵,可能還有更經典的,以后有時間補充上,呵呵。



        關鍵詞: c51循環(huán)移

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 龙井市| 容城县| 凤凰县| 长武县| 南木林县| 潼关县| 吴桥县| 株洲市| 梁平县| 英吉沙县| 乐陵市| 大悟县| 宜城市| 溆浦县| 北碚区| 郸城县| 临朐县| 和林格尔县| 惠水县| 淅川县| 胶南市| 内丘县| 乐陵市| 南通市| 寻甸| 额敏县| 陕西省| 鹤壁市| 读书| 高唐县| 治多县| 万安县| 宜宾市| 沙雅县| 准格尔旗| 三穗县| 呼图壁县| 张家港市| 平原县| 昌都县| 长顺县|