新聞中心

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

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

        作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
        1.實驗任務(wù)
        如圖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)閉
        主站蜘蛛池模板: 新宁县| 沈丘县| 新野县| 成安县| 集贤县| 梁河县| 赫章县| 洛宁县| 松原市| 台北市| 双桥区| 柳河县| 都安| 铜鼓县| 绥棱县| 德阳市| 柳林县| 鄢陵县| 安岳县| 轮台县| 九江市| 韶关市| 吐鲁番市| 孙吴县| 洪江市| 广州市| 威信县| 牟定县| 香港 | 蓝田县| 平武县| 疏附县| 泽州县| 霍州市| 姜堰市| 红桥区| 台东县| 惠东县| 霍邱县| 墨玉县| 甘洛县|