新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 讀入獨(dú)立鍵,并點(diǎn)亮相應(yīng)的LED燈

        讀入獨(dú)立鍵,并點(diǎn)亮相應(yīng)的LED燈

        作者: 時(shí)間:2012-09-05 來源:網(wǎng)絡(luò) 收藏

        ***************************************************************************
        006.asm
        讀入鍵盤上的按鍵,并把,若一段時(shí)間無按鍵,剛循環(huán)
        接線:P0口接八位
        P2口接八位按鍵
        定時(shí)器T0計(jì)時(shí),中斷方式
        ***************************************************************************/
        ORG 0000H
        LJMP MAIN
        ORG 000BH
        LJMP INT_T0
        ORG 0100H
        MAIN: ;主程序入口
        MOV SP,#50H ;設(shè)置堆棧
        MOV TMOD,#01H ;設(shè)置定時(shí)模式
        MOV TH0,#15H ;賦定時(shí)初值
        MOV TL0,#9FH
        CLR 20H.0 ;初始化按鍵標(biāo)志
        MOV R2,#0FFH ;初始化鍵值
        MOV R3,#01H ;初始化循環(huán)閃鑠初值
        MOV R4,#00H ;初始化定時(shí)初值
        SETB TR0 ;啟動(dòng)定時(shí)器
        MOV IE,#82H ;開中斷
        LOOP:
        LCALL KEY_READ ;掃描鍵盤
        L1: JB 20H.0,LIGH ;有鍵輸入,則去LED
        JBC 20H.0,LOOP
        MOV A,R4
        CJNE A,#0C8H,LOOP ;否則去判斷定時(shí)是否到,定時(shí)到,循環(huán)點(diǎn)亮八位LED
        LCALL LEED
        LJMP L1

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

        /*點(diǎn)亮LED*/
        LIGH:
        MOV A,R2 ;取鍵值
        MOV P0,A ;輸出
        RET

        /*循環(huán)點(diǎn)亮LED*/
        LEED:
        MOV A,R3
        LOOP1:
        CPL A
        MOV P0,A
        LCALL KEY_READ
        JB 20H.0,RETUN0
        MOV R0,#0FFH
        LCALL DELAY
        MOV A,R3
        RL A
        MOV R3,A
        CJNE A,#80H,LOOP1
        LOOP2:
        CPL A
        MOV P0,A
        LCALL KEY_READ
        JB 20H.0,RETUN0
        MOV R0,#0FFH
        LCALL DELAY
        MOV A,R3
        RR A
        MOV R3,A
        CJNE A,#01H,LOOP2
        SJMP LOOP1
        RETUN0:
        RET

        /*鍵盤掃描程序*/

        KEY_READ:
        CLR EA ;掃描鍵盤時(shí)關(guān)定時(shí)中斷
        MOV A,P2
        CJNE A,#0FFH,DE
        LJMP RETUN
        DE: MOV R0,#8AH
        LCALL DELAY
        MOV A,P2
        CJNE A,#0FFH,DE0
        LJMP RETUN
        DE0:MOV R2,A
        SETB 20H.0
        MOV R4,#00H
        DE1:MOV A,P2
        CJNE A,#0FFH,DE1
        RETUN:
        SETB EA
        RET

        /*中斷子程序*/

        INT_T0:
        CLR EA
        PUSH ACC
        MOV TH0,#15H ;重賦定時(shí)初值
        MOV TL0,#9FH
        INC R4
        POP ACC
        SETB EA
        RETI

        /*延時(shí)子程序 */

        DELAY:
        D1: MOV R1,#0FFH
        D0: DJNZ R1,D0
        DJNZ R0,D1
        RET


        END

        led燈相關(guān)文章:led燈原理




        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 冕宁县| 宿松县| 光山县| 栖霞市| 瑞安市| 巴林左旗| 和田县| 塔河县| 湘潭县| 萨嘎县| 任丘市| 新余市| 浪卡子县| 高州市| 射洪县| 雷山县| 汉阴县| 琼中| 葵青区| 会宁县| 固原市| 湄潭县| 双峰县| 江陵县| 集贤县| 连山| 阳西县| 乌海市| 武威市| 滨海县| 道孚县| 项城市| 兴义市| 灵石县| 民勤县| 泾阳县| 治多县| 诸暨市| 三台县| 张掖市| 金沙县|