Press控制板之實作報告
指撥開關計數器
程式名稱 : counter.zip (下載)

;動作方式
;<1> START ON/OFF 起動計數 
;<1> 讀入第一位數指撥開關數值,放在 R0
;<2> COUNTIN 開始計數比較數指撥開關數值 == <3>
;<3> RELAY1 閃爍指撥開關數值次數
;<4> 回到<1>重復
            CHIP    80152

PP0         EQU     080H
PP2         EQU     0A0H

DELTIM      EQU     30H
DELTIM_REG  EQU     31H

WATCHDOG    REG     PP2.7

RELAY1      REG     P3.4     ;  P3.4 RELAY1
RELAY2      REG     P3.5     ;  P3.5 RELAY1

START       REG     PP0.0    ;  P0.0 START ON/OFF 起動計數
COUNTIN     REG     PP0.1    ;  P0.1 計數輸入 ON/OFF 加一

;============================================================================
        ORG     0H  
;============================================================================
AGAIN:
        CPL     WATCHDOG
        MOV     P1,#11110000B
        MOV     P0,#11111111B
        CALL    DEL
;============================================================================
        MOV     P1,#11110000B
WORK:   
        CPL     WATCHDOG        ;起動計數
        JNB     START,WORK
        CALL    DEL1
        JNB     START,WORK
WORK10:       
        CPL     WATCHDOG
        JB      START,WORK10
        CLR     RELAY2
        SETB    RELAY1
   
        CALL    READ_DL         ;讀入第一位數指撥開關數值,放在 R0
        MOV     R1,R0
WORK20:                         ;比較計數值
        CPL     WATCHDOG        
        CALL    COUNT
        DJNZ    R1,WORK20 
        SETB    RELAY2

        MOV     R1,R0       
WORK30:                         ;RELAY1 閃爍指撥開關數值次數
        CPL     WATCHDOG
        CALL    FLASH
        DJNZ    COUNREG,WORK30              
              
        JMP     WORK    
;============================================================================
FLASH:
        CPL     WATCHDOG
        CLR     RELAY1
        CALL    DEL
        SETB    RELAY1
        CALL    DEL
        RET
;============================================================================
;計數一次
COUNT:
        CPL     WATCHDOG
        JNB     COUNTIN,COUNT
        CALL    DEL1
        JNB     COUNTIN,COUNT
COUNT10: 
        CPL     WATCHDOG
        JB      COUNTIN,COUNT10
        CALL    DEL1
        JB      COUNTIN,COUNT10
        RET
;============================================================================
DEL1:
        MOV     R3,#020H
DEL1A:
        MOV     R4,#0FFH
DEL1B:
        CPL     WATCHDOG
        DJNZ    R4,DEL1B
        DJNZ    R3,DEL1A
        RET
;============================================================================
DEL:
        MOV     R3,#0FFH
DELA:
        MOV     R4,#0FFH
DELB:
        CPL     WATCHDOG
        DJNZ    R4,DELB
        DJNZ    R3,DELA
        RET             
;============================================================================
DEL_RD:
        MOV     R4,#20
DEL_RD2:
        DJNZ    R4,DEL_RD2
        RET
;============================================================================
;讀入第一位數指撥開關數值,放在 R0
;P1 = 11110001B
READ_DL:
        MOV     P1,#11110001B
        CALL    DEL_RD
        MOV     A,P1
        CPL     A
        SWAP    A
        ANL     A,#00001111B
        MOV     R0,A
        RET


<<商標聲明>>
本網站於瀏覽者顯示器所出現之商標,皆為所屬公司之註冊商標,絕無侵犯之意。
建議使用I.E 4.0以上版本瀏覽器解析度1024*768觀看