新聞中心

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

        51單片機匯編語言(三)

        作者: 時間:2016-11-24 來源:網(wǎng)絡 收藏
        7.2功能說明

        用一位數(shù)碼管循環(huán)顯示0~9數(shù)字,數(shù)字變換間隔的時間為1秒。

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

        程序:SMG2.ASM

        01: START: MOV DPTR, #TABLE ; 存表

        02: MOV R0, #0 ; 設定初始值

        03: LOOP : MOV A, R0

        04: MOVC A, @A+DPTR ; 取表代碼

        05: MOV P0, A ; 送P0輸出

        06: ACALL DLY1S ; 調(diào)延時程序 存表取表

        07: INC R0 ; R0值加1

        08: CJNE R0, #10 , LOOP ; 不是10,循環(huán)

        09: JMP START ; 重新開始 判斷循環(huán)

        10: DLY1S: MOV R5, #50 ;

        11: D1: MOV R6, #100 ;

        12: D2: MOV R7, #100 ;

        13: DJNZ R7, $ ;

        14: DJNZ R6, D2 ;

        15: DJNZ R5, D1 ; 1秒延時

        16: RET 子程序

        17: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;

        18: DB 99H, 92H, 82H, 0F8H ;

        19: DB 80H, 90H, 88H, 83H ;

        20: DB 0C6H, 0A1H, 86H, 8EH ; 代碼表

        21: END 程序結(jié)束

        7.3功能說明

        使用兩位數(shù)碼管顯示器,利用掃描方式循環(huán)顯示00~99兩位數(shù)。

        程序:SMG3.ASM

        01: START: MOV R0, #0 ;初始化計數(shù)器

        02: MOV DPTR, #TABLE ;存入查表啟始地址

        03: LOOP: ACALL DISPLAY ; 調(diào)顯示子程序

        04: INC R0 ; 計數(shù)器加1

        05: CJNE R0 ,#100, LOOP ; 沒到100 循環(huán)

        06: JMP START ; 到開始處 主程序

        07: DISPLAY::MOV A, R0 ;

        08: MOV B, #10 ; 16進制換成10進制

        09: DIV AB ; A÷B商存A,余數(shù)存B

        10: MOV R1, A ; R1內(nèi)存放十位數(shù)

        11: MOV R2, B ; R2內(nèi)存放個位數(shù) 十進

        12: MOV R3, #50 ; 設導通頻率50次

        13: LOOP1: MOV A, R2 ; 個位數(shù)顯示

        14: ACALL CHANG ; 調(diào)顯示子程序

        15: CLR P2.0 ;開個位顯示

        16: ACALL DLY10mS ; 調(diào)延時10ms程序 個位

        17: SETB P2.0 ; 關(guān)閉個位顯示 顯示

        18: MOV A, R1 ; 取十位數(shù)

        19: ACALL CHANG ; 調(diào)取表顯示子程序

        20: CLR P2.1 ; 開十位顯示

        21: ACALL DLY10mS ; 調(diào)延時10ms程序 十位

        22: SETB P2.1 ; 關(guān)閉十位顯示 顯示

        23: DJNZ R3, LOOP1 ; 100次沒完,繼續(xù)循環(huán) 掃描

        24: RET ; 子程序

        25: CHANG: MOVC A, @A+DPTR ;

        26: MOV P0, A ;

        27: RET ; 取表子程序

        28: DLY10mS:MOV R6, #20

        29: D1: MOV R7, #248 ;

        30: DJNZ R7, $ ;

        31: DJNZ R6, D1 ; 延時10 m.S

        32: RET ; 子程序

        33: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;

        34: DB 99H, 92H, 82H, 0F8H ;

        35: DB 80H, 90H, 88H, 83H ;

        36: DB 0C6H, 0A1H, 86H, 8EH ; 代碼表

        37: END ; 程序結(jié)束

        鍵盤控制

        8.1功能說明:

        用八位指撥開關(guān)(DIP)作單片機的輸入,控制輸出端口連接的八只LED發(fā)光二極管。如若DIP1開關(guān)為 ON(向右撥動)則LED1亮,其它開關(guān)作用相同。

        程序:SR01.ASM

        01: LOOP: MOV A, P3 ; 從P3讀入DIP開關(guān)值

        02: MOV P1, A ; 從P1輸出

        03: JMP LOOP ; 無窮循環(huán)

        04: END ; 程序結(jié)束

        8.2功能說明:

        用DIP開關(guān)中的低4位作二進制的輸入,控制輸出端數(shù)碼管顯示器的輸出。

        程序:SR02.ASM

        01: MOV DPTR,#TABLE ; 存表

        02: MOV P0, #0FFH ; LED全滅

        03: LOOP: MOV A, P3 ; 從P3口讀入DIP開關(guān)值

        04: ANL A, #0FH ; 高4位清0,取低四位

        05: ACALL CHANG ; 轉(zhuǎn)成七段顯示碼

        06: MOV P0, A ; 從P0輸出

        07: JMP LOOP ; 轉(zhuǎn)移LOOP處,循環(huán)

        08: CHANG: MOVC A,@A+DPTR ; 取碼

        09: RET ; 返回 轉(zhuǎn)換顯示碼子程序

        10: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;

        11: DB 99H, 92H, 82H, 0F8H ;

        12: DB 80H, 90H, 88H, 83H ;

        13: DB 0C6H, 0A1H, 86H, 8EH ; 顯示碼表

        14: END ; 程序結(jié)束

        8.3功能說明:

        用兩個按鍵開關(guān)K1和K2作輸入,K1為電源指示燈開關(guān),K2為工作指示燈開關(guān)。分別控制電源指示燈(P1.0接的LED)和工作指示燈(P1.7接的LED)的接通和關(guān)閉。接通電源時,電源指示燈是在亮的狀態(tài)。

        當按K2時,工作指示燈亮,電源指示燈滅。按K1時,電源指示燈亮,工作指示燈滅。

        程序:SR03.ASM

        01: START: MOV P1, #11111110B ; P1.0所接LED亮

        02: JB P2.5 , $ ; 判斷P2.5(K2鍵)是否為1

        03: ON: MOV P1, #01111111B ; P1.7所接LED亮

        04: JNB P2.4, START ; 判斷P2.4(K1鍵)是是否為0

        05: JMP ON ; 未按K1鍵,則跳至ON

        06: END ; 程序結(jié)束

        8.4功能說明:

        由四個按鍵開關(guān)組成獨立式鍵盤,控制燈左移、右移和閃爍。

        程序:JP01.ASM

        01: START: MOV P1,#0FFH ;設置輸出口初值

        02: MOV A,#0FFH ;設置輸入方式

        03: MOV P2,A ;

        04: LOOP: MOV A,P2 ;讀入鍵盤狀態(tài)

        05: CJNE A,#0FFH,LP0 ;有鍵按下否

        06: JMP LOOP ;無鍵按下等待

        07: LP0: ACALL DELAY1 ;調(diào)延時去抖動

        08: MOV A,P2 ;重讀入鍵盤狀態(tài)

        09: CJNE A,#0FFH,LP1 ;非誤讀則轉(zhuǎn)

        10: JMP LOOP ; 按鍵查詢

        11: LP1: JNB P2.4, A1 ;K1鍵按下轉(zhuǎn)A1

        12: JNB P2.5, A2 ;K2鍵按下轉(zhuǎn)A2

        13: JNB P2.6, A4 ;K3鍵按下轉(zhuǎn)A3

        14: JNB P2.7, A4 ;K4鍵按下轉(zhuǎn)A4 鍵按下后轉(zhuǎn)

        15: JMP START ;無鍵按下返回 功能處理程序

        16: A1: MOV R0, #8 ;設置左移位數(shù)

        17: MOV A ,#0FEH ;設置左移初值

        18: LOOP2: MOV P1, A ;輸出至P1

        19: ACALL DELAY ;調(diào)延時1秒子程序

        20: RL A ;左移一位

        21: DJNZ R0, LOOP2 ;判斷移動位數(shù) 1號功能鍵

        22: JMP START ;返回主程序開始處 處理程序

        23: A2: MOV R0,#8 ;設置右移位數(shù)

        24: MOV A ,#0FCH ;設置右移初值

        25: LOOP3: RR A ;右移一位

        26: MOV P1, A ;輸出至P1

        27: ACALL DELAY ;調(diào)延時1秒子程序

        28: DJNZ R0, LOOP3 ;判斷移動位數(shù) 2號功能鍵

        29: JMP START ;返回主程序開始處 處理程序

        30: A3: MOV R0,#6 ;設置閃爍次數(shù)

        31: MOV A ,#0F0H ;設置初值

        32: LOOP4: MOV P1, A ;輸出至P1

        33: ACALL DELAY ;調(diào)延時1秒子程序

        34: CPL A ;反相

        35: MOV P1,A ;輸出

        36: DJNZ R0, LOOP4 ;判斷移動位數(shù) 3號功能鍵

        37: JMP START ;返回主程序開始處 處理程序

        38: A4: MOV R0,#10 ;設置閃爍次數(shù)

        39: MOV A, #00H ;設置初值

        40: LOOP5: MOV P1,A ;輸出

        41: ACALL DELAY ;調(diào)延時子程序

        42: CPL A ;反相

        43: MOV P1,A ;輸出

        44: DJNZ R0, LOOP5 ;判斷閃爍次數(shù) 4號功能鍵

        45: MP START ;返回主程序開始處 處理程序

        46: DELAY1: MOV R3, #60 ;消抖延時子程序

        47: D2: MOV R4, #248 ;

        48: DJNZ R4, $

        49: DJNZ R3, D2 消除抖動

        50: RET ; 延時子程序

        51: DELAY: MOV R5, #50 ;延時1秒子程序

        52: DLY1: MOV R6, #100 ;

        53: DLY2: MOV R7, #100 ;

        54: DJNZ R7, $ ;

        55: DJNZ R6, DLY2 ;

        56: DJNZ R5, DLY1 ;

        57: RET ; 延時子程序

        58: END ; 程序結(jié)束



        關(guān)鍵詞: 51單片機匯編語

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 玛多县| 德保县| 财经| 濮阳市| 武陟县| 南陵县| 缙云县| 柳江县| 怀安县| 九台市| 苏尼特右旗| 鄂托克旗| 扎鲁特旗| 阳泉市| 桃园县| 石泉县| 武鸣县| 红安县| 江都市| 新建县| 九江市| 英德市| 松江区| 阆中市| 稻城县| 贵溪市| 奈曼旗| 忻城县| 南开区| 驻马店市| 宜黄县| 绵竹市| 蒲江县| 普洱| 沾化县| 京山县| 邵东县| 屏边| 凤阳县| 磐安县| 灌云县|