新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機匯編語言(一)

        51單片機匯編語言(一)

        作者: 時間:2016-11-24 來源:網絡 收藏
        6.1功能說明:控制單片機P1端口輸出,使P1.0位所接的LED點亮,其他7只燈熄滅。

        程序:JS01.ASM

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

        01: MOV A , #11111110B ; 存入欲顯示燈的位置數據

        02:MOV P1, A ; 點亮第一只燈

        03: JMP $ ; 保持當前的輸出狀態

        04: END ; 程序結束

        6.2功能說明:單片機P1端口接8只LED,點亮第1、3、4、6、7、8只燈。

        程序:JS02.ASM

        01:START: MOV A , #00010010B ; 存入欲顯示燈的位置數據

        02: MOV P1, A ; 點亮燈

        03: JMP START ; 重新設定顯示值

        04: END ; 程序結束

        6.3功能說明:單片機P1端口接8只LED,每次點亮一只,向左移動點亮,重復循環。

        該程序缺少延時環節,適合模擬仿真觀察。

        程序:JS03.ASM

        01: START: MOV R0, #8 ;設左移8次

        02: MOV A, #11111110B ;存入開始點亮燈位置

        03: LOOP: MOV P1, A ;傳送到P1并輸出

        04: RL A ;左移一位

        05: DJNZ R0, LOOP ;判斷移動次數

        06: JMP START ;重新設定顯示值

        07: END ;程序結束

        6.4功能說明:單片機P1端口接8只LED,每次點亮一只,向右移動點亮,重復循環。

        程序:JS04.ASM

        01: START: MOV R0, #8 ;設右移8次

        02: MOV A, #01111111B ;存入開始點亮燈位置

        03: LOOP: MOV P1, A ;傳送到P1并輸出

        04: ACALL DELAY ;調延時子程序

        05: RR A ;右移一位

        06: DJNZ R0, LOOP ;判斷移動次數

        07: JMP START ;重新設定顯示值

        08: DELAY: MOV R5,#50

        09: DLY1: MOV R6,#100

        10: DLY2: MOV R7,#100

        11: DJNZ R7,$

        12: DJNZ R6,DLY2

        13: DJNZ R5,DLY1

        14: RET ;子程序返回

        15: END ;程序結束

        6.5功能說明:單片機P1端口接8只LED,每次點亮一只,先把右邊的第一只點亮,0.5秒后點亮右數的第二只燈,第一只熄滅,再過0.5秒點亮右數的第三只燈,第二只熄滅,…亮燈按此順序由右向左移動。當亮燈移到左側后,開始與上述反方向移動,即亮燈由左向右移動,重復循環。

        程序:JS05.ASM

        01: START: MOV R0, #8 ;設左移8次

        02: MOV A,#0FEH ;存入開始亮燈位置

        03: LOOP: MOV P1, A ;傳送到P1并輸出

        04: ACALL DELAY ;調延時子程序

        05: RL A ;左移一位

        06: DJNZ R0, LOOP ;判斷移動次數

        07: MOV R1, #8 ;設右移8次

        08; LOOP1: RR A ;右移一位

        09: MOV P1, A ;傳送到P1并輸出

        10: ACALL DELAY ;調延時子程序

        11: DJNZ R1,LOOP1 ;判斷移動次數

        12: JMP START ;重新設定顯示值

        13: DELAY: MOV R5,#25 ;延時0.5秒子程序

        14: DLY1: MOV R6,#100

        15: DLY2: MOV R7,#100

        16: DJNZ R7,$

        17: DJNZ R6,DLY2

        18: DJNZ R5,DLY1

        19: RET ;子程序返回

        20: END

        6.6功能說明:單片機P1端口接8只LED,每次點亮兩只,先從右邊向左邊移動點亮;再從左邊向右邊移動點亮,然后閃爍兩次,重復循環。

        程序:JS06.ASM

        01: START: MOV R0, #7 ;設左移7次

        02: MOV A,#0FCH ;存入開始亮燈位置

        03: LOOP: MOV P1, A ;傳送到P1并輸出

        04: ACALL DELAY ;調延時子程序

        05: RL A ;左移一位

        06: DJNZ R0, LOOP ;判斷移動次數

        07: MOV R1, #7 ;設右移7次

        08: LOOP1: RR A ;右移一位

        09: MOV P1, A ;傳送到P1并輸出

        10: ACALL DELAY ;調延時子程序

        11: DJNZ R1, LOOP1 ;判斷移動次數

        12: MOV R2, #3 ;設置閃爍次數

        13: MOV A, #00H ;設初始值

        14: LOOP2: MOV P1, A ;P1端口燈亮

        15: ACALL DELAY ;調用延時子程序

        16: CPL A ;A取反值

        17: DJNZ R2, LOOP2 ;判斷閃爍次數

        18: JMP START ;重新設定顯示值

        19: DELAY: MOV R5, #25

        20: DLY1: MOV R6, #100

        21: DLY2: MOV R7, #100

        22: DJNZ R7, $

        23: DJNZ R6, DLY2

        24: DJNZ R5, DLY1

        25: RET ;子程序返回

        26: END ;程序結束



        關鍵詞: 51單片機匯編語

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 绥阳县| 长兴县| 内黄县| 安宁市| 乌什县| 新宁县| 彰化县| 定结县| 安平县| 团风县| 濮阳县| 垫江县| 邛崃市| 黄龙县| 修文县| 清镇市| 恩平市| 广水市| 萝北县| 白城市| 卢龙县| 宾川县| 公安县| 泰顺县| 静乐县| 文水县| 萨嘎县| 光泽县| 红桥区| 英德市| 阿克陶县| 桂阳县| 甘德县| 邵阳市| 大名县| 左云县| 临海市| 陆川县| 仁布县| 马关县| 安宁市|