新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 智能定時插座程序

        智能定時插座程序

        作者: 時間:2012-10-27 來源:網絡 收藏

        ;**************************************************************
        ;電院 單片機設計
        :智能

        ;**************************************************************
        ;功能描述:帶鍵盤設置的時間計數器
        ;功能:實現1分鐘到99小時99分鐘內的定時。可定時關機或定時開機。
        ;各個鍵的功能:
        ;S1:小時十位調整
        ;S2:小時個位調整
        ;S3;分鐘十位調整
        ;S4:分鐘各位調整
        ;可擴展功能:時間顯示
        ;硬件描述:
        ;P0口顯示字段。P2.0-2.3共陽控制端。P1.0-P1.3按鍵
        ;P3.4
        ;**************************************************************
        STARTRUN BIT 01H;開始運行標志
        KEYOK BIT 00H;有鍵按下標志
        SCOUNT EQU 21H;分計數器
        SETVAL EQU 22H;預置分值儲存單元
        SCOUNT2 EQU 26H;小時計數器
        SETVAL2 EQU 27H;預置小時儲存單元
        TCOUNT EQU 24H;;秒計數器
        TCOUNTER EQU 250;軟件計數器的計數值,X定時器4MS等于1S
        KEYVAL EQU 25H;鍵值儲存單元
        DISPBUF EQU 58H;顯示緩沖區
        COUNTER EQU 57H;計數器,顯示程序通過它得知現在正在顯示的
        TMRVAR EQU 61536;設定4MS。65536-4000定時器初值
        ORG 0000H
        JMP START
        ORG 0*8+3;INTO中斷入口
        RETI
        ORG 1*8+3;定時器0中斷入口
        LJMP INT_T0
        ORG 2*8+3
        RETI
        ORG 3*8+3
        RETI
        ORG 4*8+3
        RETI
        ;*******************主程序設定************************************
        START:
        MOV R7,#60
        MOV R4,#60
        MOV SP,#5FH
        MOV SCOUNT,#0
        MOV SCOUNT2,#0
        MOV SETVAL,#00;啟動程序默認值為0
        MOV SETVAL2,#00
        MOV SCOUNT,SETVAL
        MOV SCOUNT2,SETVAL2
        CLR KEYOK
        CLR STARTRUN
        CALL INIT_T0
        SETB EA
        ;********************主程序開始***************************************
        LOOP:
        CALL KEY;調用鍵盤程序
        JB KEYOK,KEYPROC;如果有鍵按下,轉鍵盤處理程序
        NEXT:
        MOV A,SCOUNT;獲取分的數值
        MOV B,#10
        DIV AB
        NEXT1:
        MOV DISPBUF+2,A;送顯示緩沖區
        MOV DISPBUF+3,B
        NEXT2:
        MOV A,SCOUNT2;獲取小時的數值
        MOV B,#10
        DIV AB
        NEXT3:
        MOV DISPBUF,A
        MOV DISPBUF+1,B

        JMP LOOP
        ;*******************鍵值處理程序****************************************
        KEYPROC:
        MOV A,KEYVAL;取得鍵值
        JZ KEY1;如果鍵值是0,轉
        DEC A
        JZ KEY2;如果鍵值是1,轉
        DEC A
        JZ KEY3;如果鍵值是2,轉
        JMP KEY4;如果鍵值是3,轉
        KEY1:;對小時十位進行操作
        INC DISPBUF;將顯示緩沖區的數加1
        MOV A,DISPBUF
        CJNE A,#9,EFT01
        MOV DISPBUF,#0
        SETB STARTRUN

        EFT01:;鍵值處理
        MOV B,#10
        MUL AB
        ADD A,DISPBUF+1
        MOV SETVAL2,A
        MOV SCOUNT2,SETVAL2
        SETB STARTRUN
        JMP LOOP
        KEY2:

        INC DISPBUF+1
        MOV A,DISPBUF+1
        CJNE A,#10,EFT02
        MOV DISPBUF+1,#0
        SETB STARTRUN
        EFT02:
        MOV A,DISPBUF
        MOV B,#10
        MUL AB
        ADD A,DISPBUF+1
        MOV SETVAL2,A
        MOV SCOUNT2,SETVAL2
        SETB STARTRUN
        JMP LOOP

        KEY3:
        INC DISPBUF+2
        MOV A,DISPBUF+2
        CJNE A,#6,LEFT0
        MOV A,#0
        SETB STARTRUN
        LEFT0:
        MOV B,#10
        MUL AB
        ADD A,DISPBUF+3
        MOV SETVAL,A
        MOV SCOUNT,SETVAL
        SETB STARTRUN
        JMP LOOP
        KEY4:
        INC DISPBUF+3
        MOV A,DISPBUF+3
        CJNE A,#10,REFT0
        MOV DISPBUF+3,#0
        SETB STARTRUN
        REFT0:
        MOV A,DISPBUF+2
        MOV B,#10
        MUL AB
        ADD A,DISPBUF+3
        MOV SETVAL,A
        MOV SCOUNT,SETVAL
        SETB STARTRUN
        JMP LOOP
        ;**************鍵盤程序********************************************************
        KEY:
        MOV P1,#0FFH
        CLR KEYOK
        MOV A,P1
        ORL A,#11110000B
        CPL A
        JZ KEY_RET
        CALL DELAY
        MOV A,P1
        ORL A,#11110000B
        CPL A
        JZ KEY_RET
        SETB KEYOK
        JNB ACC.0,KEY_1
        MOV KEYVAL,#0
        JMP KEY_RET
        KEY_1:
        JNB ACC.1,KEY_2
        MOV KEYVAL,#1
        JMP KEY_RET
        KEY_2:
        JNB ACC.2,KEY_3
        MOV KEYVAL,#2
        JMP KEY_RET
        KEY_3:

        MOV KEYVAL,#3


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乾安县| 临澧县| 阿合奇县| 木里| 马公市| 麻栗坡县| 阿城市| 乌拉特中旗| 龙江县| 郧西县| 清原| 宁晋县| 南丰县| 湖北省| 梁平县| 元朗区| 崇信县| 灵台县| 揭东县| 浦县| 云和县| 额尔古纳市| 呼伦贝尔市| 松溪县| 牡丹江市| 盘锦市| 拜城县| 定陶县| 龙泉市| 榕江县| 绥中县| 兴安县| 屏东县| 本溪市| 吉首市| 德格县| 怀宁县| 洛阳市| 三台县| 渭源县| 石景山区|