• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 嘉义县| 红桥区| 上蔡县| 丹巴县| 德江县| 开鲁县| 昆明市| 吉木萨尔县| 淄博市| 资阳市| 张掖市| 延寿县| 马鞍山市| 甘洛县| 衢州市| 武义县| 桐梓县| 石狮市| 甘德县| 肇州县| 河北区| 海原县| 获嘉县| 荥经县| 南丹县| 灵宝市| 揭东县| 迭部县| 连州市| 大丰市| 沁源县| 迭部县| 泌阳县| 楚雄市| 朝阳市| 镇江市| 鄯善县| 迭部县| 长海县| 古田县| 荆州市|