新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 3. 多路開關(guān)狀態(tài)指示

        3. 多路開關(guān)狀態(tài)指示

        作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
        1.實驗任務
        如圖4.3.1所示,AT89S51單片機的P1.0-P1.3接四個發(fā)光二極管L1-L4,P1.4-P1.7接了四個開關(guān)K1-K4,編程將開關(guān)的狀態(tài)反映到發(fā)光二極管上。(開關(guān)閉合,對應的燈亮,開關(guān)斷開,對應的燈滅)。
        2.電路原理

        圖4.3.1
        3.系統(tǒng)板上硬件連線
        (1.把“單片機系統(tǒng)”區(qū)域中的P1.0-P1.3用導線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的L1-L4端口上;
        (2.把“單片機系統(tǒng)”區(qū)域中的P1.4-P1.7用導線連接到“四路撥動開關(guān)”區(qū)域中的K1-K4端口上;
        4.程序設(shè)計內(nèi)容
        (1.開關(guān)狀態(tài)檢測
        對于開關(guān)狀態(tài)檢測,相對單片機來說,是輸入關(guān)系,我們可輪流檢測每個開關(guān)狀態(tài),根據(jù)每個開關(guān)的狀態(tài)讓相應的發(fā)光二極管指示,可以采用JBP1.X,REL或JNBP1.X,REL指令來完成;也可以一次性檢測四路開關(guān)狀態(tài),然后讓其指示,可以采用MOVA,P1指令一次把P1端口的狀態(tài)全部讀入,然后取高4位的狀態(tài)來指示。
        (2.輸出控制
        根據(jù)開關(guān)的狀態(tài),由發(fā)光二極管L1-L4來指示,我們可以用SETBP1.X和CLRP1.X指令來完成,也可以采用MOVP1,#1111XXXXB方法一次指示。
        5.程序框圖
        開始

        讀P1口數(shù)據(jù)到ACC中

        ACC內(nèi)容右移4次

        ACC內(nèi)容與F0H相或

        ACC內(nèi)容送入P1口

        圖4.3.2
        6.方法一(匯編源程序)
        ORG00H
        START:MOVA,P1
        ANLA,#0F0H
        RRA
        RRA
        RRA
        RRA
        XORA,#0F0H
        MOVP1,A
        SJMPSTART
        END
        7.方法一(C語言源程序)
        #include
        unsignedchartemp;

        voidmain(void)
        {
        while(1)
        {
        temp=P1>>4;
        temp=temp|0xf0;
        P1=temp;
        }
        }
        8.方法二(匯編源程序)
        ORG00H
        START:JBP1.4,NEXT1
        CLRP1.0
        SJMPNEX1
        NEXT1:SETBP1.0
        NEX1:JBP1.5,NEXT2
        CLRP1.1
        SJMPNEX2
        NEXT2:SETBP1.1
        NEX2:JBP1.6,NEXT3
        CLRP1.2
        SJMPNEX3
        NEXT3:SETBP1.2
        NEX3:JBP1.7,NEXT4
        CLRP1.3
        SJMPNEX4
        NEXT4:SETBP1.3
        NEX4:SJMPSTART
        END
        9.方法二(C語言源程序)
        #include

        voidmain(void)
        {
        while(1)
        {
        if(P1_4==0)
        {
        P1_0=0;
        }
        else
        {
        P1_0=1;
        }
        if(P1_5==0)
        {
        P1_1=0;
        }
        else
        {
        P1_1=1;
        }
        if(P1_6==0)
        {
        P1_2=0;
        }
        else
        {
        P1_2=1;
        }
        if(P1_7==0)
        {
        P1_3=0;
        }
        else
        {
        P1_3=1;
        }
        }
        }


        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 池州市| 鱼台县| 承德市| 雷山县| 眉山市| 涡阳县| 英德市| 稷山县| 佛山市| 吴川市| 平安县| 北宁市| 罗源县| 贡山| 黄龙县| 阿鲁科尔沁旗| 松潘县| 治多县| 韩城市| 临沧市| 佛山市| 枝江市| 嘉荫县| 廊坊市| 西宁市| 青州市| 环江| 苍梧县| 阜城县| 宾阳县| 青浦区| 蓬安县| 贡山| 钟祥市| 三穗县| 大埔区| 上虞市| 蓬安县| 喜德县| 德令哈市| 余江县|