?? n_night.asm
字號:
;
; ;
;Type: MDT10P53A1 INT_RC_OSC: 4MHz INT_RST ;
; ;
;*******************************************************;
;-------------------FSR DEFINE--------------------;
;*************************************************;
INDF EQU 00H ;
TMR0 EQU 01H ;
STATUS EQU 03H ;
FSR EQU 04H ;
PORTB EQU 06H ;
;*************************************************;
;-----------------PORT DEFINE---------------------;
;*************************************************;
LED_RED_OUT EQU 0 ;
LED_GREEN_OUT EQU 1 ;
LED_BLUE_OUT EQU 2 ;
DAY_NIGHT_IN EQU 3 ;
PAUSE_IN EQU 4 ;
;*************************************************;
;----------------REGISTER DEFINE------------------;
;*************************************************;
SIGN EQU 10H ;
KEY_SIGN EQU 0 ;
PAUSE_SIGN EQU 1 ;
PS_SIGN EQU 2 ;
RUN_PAUSE EQU 3 ;
KEY_OFF EQU 4 ;
KEY_ON EQU 5 ;
;*************************************************;
DELAY_1 EQU 0FH ;
DELAY_2 EQU 0EH ;
DELAY_3 EQU 0DH ;
DELAY_COUNT EQU 0CH ;
TIME_COUNT1 EQU 0BH ;
TIME_COUNT2 EQU 0AH ;
TIME_COUNT3 EQU 09H ;
TIME_COUNT4 EQU 08H ;
;*************************************************;
LIST P=12C509
;*************************************************;
;--------------------PROGRAMME START------------------------;
;*************************************************;
ORG 0000H
RESET
; BCF INDF,0
; BCF INDF,0
BSF STATUS,5
GOTO START
;*************************************************;
ORG 0200H
;*************************************************;
;*************************************************;
DELAY
MOVLW 07H ;50uS ;11H 5S ;0EH 4S
MOVWF DELAY_1
DELAY_1_1
CLRWDT
DECFSZ DELAY_1,1
GOTO DELAY_1_1
RETLW 00H
;*************************************************;
;*************************************************;
DELAY_5MS
MOVLW 0AH
MOVWF DELAY_1
DELAY_5MS_1
MOVLW 64H
MOVWF DELAY_2
DELAY_5MS_2
CLRWDT
DECFSZ DELAY_2,1
GOTO DELAY_5MS_2
DECFSZ DELAY_1,1
GOTO DELAY_5MS_1
RETLW 00H
;*************************************************;
;*************************************************;
DELAY_1S
MOVLW 0AH
MOVWF DELAY_1
DELAY_1S_1
MOVLW 64H
MOVWF DELAY_2
DELAY_1S_2
MOVLW 3FH
MOVWF DELAY_3
DELAY_1S_3
CLRWDT
DECFSZ DELAY_3,1
GOTO DELAY_1S_3
DECFSZ DELAY_2,1
GOTO DELAY_1S_2
DECFSZ DELAY_1,1
GOTO DELAY_1S_1
RETLW 00H
;*************************************************;
;*************************************************;
PAUSE_HIGH
BSF SIGN,PS_SIGN ;
BSF SIGN,PAUSE_SIGN ;
BSF SIGN,RUN_PAUSE ;
GOTO PAUSE_END ;
;*************************************************;
PAUSE_LOW
BCF SIGN,RUN_PAUSE ;
BCF SIGN,PAUSE_SIGN ;
BCF SIGN,PS_SIGN ;
;*************************************************;
PAUSE_END
BCF SIGN,KEY_OFF ;
BCF SIGN,KEY_ON ;
RETLW 00H ;
;*************************************************;
;*************************************************;
START
CLRF PORTB ;
MOVLW B'00111000' ; ;B'00111000'
TRIS PORTB ;
BSF PORTB,LED_RED_OUT ;
BSF PORTB,LED_GREEN_OUT ;
BSF PORTB,LED_BLUE_OUT ;
;-------------------------------------------;
MOVLW 00H ; ;B'00000000'
OPTION ; ;TMR0_PS = 2:1 2*1uS
;-------------------------------------------;
MOVLW 07H ;
MOVWF FSR ;
MEM_CLEAN_1
CLRWDT ;
CLRF INDF ;
INCF FSR,1 ;
BTFSS FSR,4 ;
GOTO MEM_CLEAN_1 ;
BTFSS FSR,3 ;
GOTO MEM_CLEAN_1 ;
CLRF INDF ;
;*************************************************;
;*************************************************;
MAIN
CLRWDT
CLRF SIGN ;
BTFSS PORTB,DAY_NIGHT_IN ;
GOTO STATUS_ONE_1 ;
CALL DELAY_5MS ;
BTFSS PORTB,DAY_NIGHT_IN ;
GOTO STATUS_ONE_1 ;
;-------------------------------------------;
LIGHT_OFF
BSF PORTB,LED_RED_OUT ;R
BSF PORTB,LED_GREEN_OUT ;G ;RGB OFF
BSF PORTB,LED_BLUE_OUT ;B
CLRF SIGN ;
GOTO MAIN ;
;-------------------------------------------;
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_1
;-------------------------------------------;;-------------------------------------------;
CLRWDT ;
MOVLW 08H ; ;2S
MOVWF DELAY_COUNT ;
;-------------------------------------------;
STATUS_ONE_1_1
BSF PORTB,LED_RED_OUT ;R
BSF PORTB,LED_GREEN_OUT ;G
BCF PORTB,LED_BLUE_OUT ;B ;B
;-------------------------------------------;
CALL DELAY_1S ;
BTFSC SIGN,KEY_SIGN ;
GOTO LIGHT_OFF ; ;LIGHT TEST
BTFSC PORTB,DAY_NIGHT_IN ;
BSF SIGN,KEY_SIGN ;
BTFSS PORTB,PAUSE_IN ;
GOTO STATUS_ONE_1_2 ;
CALL DELAY_5MS ;
BTFSS PORTB,PAUSE_IN ;
GOTO STATUS_ONE_1_2 ;
;-------------------------------------------;
STATUS_ONE_WAIT
CLRWDT ;
BTFSC PORTB,PAUSE_IN ;
GOTO STATUS_ONE_WAIT ;
;-------------------------------------------;
BTFSC SIGN,RUN_PAUSE ;
GOTO LOW_1 ;
BTFSS SIGN,RUN_PAUSE ;
BSF SIGN,RUN_PAUSE ;
GOTO PAUSE_1 ;
LOW_1
BCF SIGN,RUN_PAUSE ;
PAUSE_1
BTFSS SIGN,RUN_PAUSE ;
GOTO STATUS_ONE_1_2 ;
;-------------------------------------------;
GOTO STATUS_ONE_1_1 ;
STATUS_ONE_1_2
BTFSC SIGN,RUN_PAUSE ;
GOTO STATUS_ONE_1_1 ;
DECFSZ DELAY_COUNT,1 ;
GOTO STATUS_ONE_1_1
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_2 ;GREEN RISE
;-------------------------------------------;;-------------------------------------------;
CLRWDT ;
BSF PORTB,LED_RED_OUT ;R
BCF PORTB,LED_BLUE_OUT ;B ;BG
BSF PORTB,LED_GREEN_OUT ;G
;-------------------------------------------;
MOVLW 0FFH ;256
MOVWF TIME_COUNT1 ;
CLRF TIME_COUNT2 ;
;-------------------------------------------;
LIGHT_G_2
MOVF TIME_COUNT1,0 ;
MOVWF TIME_COUNT3 ;
BTFSC SIGN,PS_SIGN ;
GOTO LIGHT_G_BG ;
DECF TIME_COUNT1,1 ;
INCF TIME_COUNT2,1 ;
LIGHT_G_BG
MOVF TIME_COUNT2,0 ;
MOVWF TIME_COUNT4 ;
BTFSC SIGN,PS_SIGN ;
GOTO LIGHT_G_ON_2_1 ;
;-------------------------------------------;
LIGHT_G_ON_2
DECFSZ TIME_COUNT3,1 ;
GOTO LIGHT_G_ON_2_1 ;
GOTO LIGHT_G_2_KEY ;
LIGHT_G_ON_2_1
BSF PORTB,LED_GREEN_OUT ;G
CALL DELAY ;
GOTO LIGHT_G_ON_2 ;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_G_2_KEY
BTFSC SIGN,KEY_SIGN ;
GOTO LIGHT_OFF ; ;LIGHT TEST
BTFSC PORTB,DAY_NIGHT_IN ;
BSF SIGN,KEY_SIGN ;
;-------------------------------------------;
BTFSS SIGN,KEY_ON ;
GOTO STATUS_2_1 ;
BTFSC PORTB,PAUSE_IN ;
GOTO STATUS_2_1 ;
GOTO STATUS_2_2 ;
STATUS_2_1
BTFSS PORTB,PAUSE_IN ;
GOTO LIGHT_G_OFF_2 ;
BSF SIGN,KEY_ON ;
GOTO LIGHT_G_OFF_2 ;
STATUS_2_2
BTFSS SIGN,KEY_ON ;
GOTO LIGHT_G_OFF_2 ;
BTFSC SIGN,RUN_PAUSE ;
GOTO LOW_2 ;
CALL PAUSE_HIGH ;
GOTO LIGHT_G_OFF_2 ;
LOW_2
CALL PAUSE_LOW ;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_G_OFF_2
DECFSZ TIME_COUNT4,1 ;
GOTO LIGHT_G_OFF_2_1 ;
GOTO LIGHT_G_2_END ;
LIGHT_G_OFF_2_1
BCF PORTB,LED_GREEN_OUT ;G
CALL DELAY ;
GOTO LIGHT_G_OFF_2 ;
;-------------------------------------------;
LIGHT_G_2_END
BTFSC SIGN,KEY_SIGN ;
GOTO LIGHT_OFF ; ;LIGHT TEST
BTFSC PORTB,DAY_NIGHT_IN ;
BSF SIGN,KEY_SIGN ;
MOVLW 00H ;
SUBWF TIME_COUNT1,0 ;
BTFSS STATUS,2 ;
GOTO LIGHT_G_2 ;
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_3 ;BLUE LOWER
;-------------------------------------------;;-------------------------------------------;
CLRWDT
BSF PORTB,LED_RED_OUT ;R
BCF PORTB,LED_GREEN_OUT ;G GB
BCF PORTB,LED_BLUE_OUT ;B
MOVLW 0FFH ;256
MOVWF TIME_COUNT1 ;
CLRF TIME_COUNT2 ;
;-------------------------------------------;
LIGHT_B_3
MOVF TIME_COUNT1,0 ;
MOVWF TIME_COUNT3 ;
BTFSC SIGN,PS_SIGN ;
GOTO LIGHT_B_GB ;
DECF TIME_COUNT1,1 ;
INCF TIME_COUNT2,1 ;
LIGHT_B_GB
MOVF TIME_COUNT2,0 ;
MOVWF TIME_COUNT4 ;
BTFSC SIGN,PS_SIGN ;
GOTO LIGHT_B_ON_3_1 ;
;-------------------------------------------;
LIGHT_B_ON_3
DECFSZ TIME_COUNT3,1 ;
GOTO LIGHT_B_ON_3_1 ;
GOTO LIGHT_B_3_KEY ;
LIGHT_B_ON_3_1
BCF PORTB,LED_BLUE_OUT ;B
CALL DELAY ;
GOTO LIGHT_B_ON_3 ;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_B_3_KEY
BTFSC SIGN,KEY_SIGN ;
GOTO LIGHT_OFF ; ;LIGHT TEST
BTFSC PORTB,DAY_NIGHT_IN ;
BSF SIGN,KEY_SIGN ;
;-------------------------------------------;
BTFSS SIGN,KEY_ON ;
GOTO STATUS_3_1 ;
BTFSC PORTB,PAUSE_IN ;
GOTO STATUS_3_1 ;
GOTO STATUS_3_2 ;
STATUS_3_1
BTFSS PORTB,PAUSE_IN ;
GOTO LIGHT_B_OFF_3 ;
BSF SIGN,KEY_ON ;
GOTO LIGHT_B_OFF_3 ;
STATUS_3_2
BTFSS SIGN,KEY_ON ;
GOTO LIGHT_B_OFF_3 ;
BTFSC SIGN,RUN_PAUSE ;
GOTO LOW_3 ;
CALL PAUSE_HIGH ;
GOTO LIGHT_B_OFF_3 ;
LOW_3
CALL PAUSE_LOW ;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_B_OFF_3
DECFSZ TIME_COUNT4,1 ;
GOTO LIGHT_B_OFF_3_1 ;
GOTO LIGHT_B_3_END ;
LIGHT_B_OFF_3_1
BSF PORTB,LED_BLUE_OUT ;B
CALL DELAY ;
GOTO LIGHT_B_OFF_3 ;
;-------------------------------------------;
LIGHT_B_3_END
BTFSC SIGN,KEY_SIGN ;
GOTO LIGHT_OFF ; ;LIGHT TEST
BTFSC PORTB,DAY_NIGHT_IN ;
BSF SIGN,KEY_SIGN ;
MOVLW 00H ;
SUBWF TIME_COUNT1,0 ;
BTFSS STATUS,2 ;
GOTO LIGHT_B_3 ;
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_4
;-------------------------------------------;;-------------------------------------------;
CLRWDT
MOVLW 08H ; ;2S
MOVWF DELAY_COUNT ;
;-------------------------------------------;
STATUS_ONE_4_1
BSF PORTB,LED_BLUE_OUT ;B
BCF PORTB,LED_GREEN_OUT ;G ;G
BSF PORTB,LED_RED_OUT ;R
;-------------------------------------------;
CALL DELAY_1S ; ;
BTFSC SIGN,KEY_SIGN ;
GOTO LIGHT_OFF ; ;LIGHT TEST
BTFSC PORTB,DAY_NIGHT_IN ;
BSF SIGN,KEY_SIGN ;
BTFSS PORTB,PAUSE_IN ;
GOTO STATUS_ONE_4_2 ;
CALL DELAY_5MS ;
BTFSS PORTB,PAUSE_IN ;
GOTO STATUS_ONE_4_2 ;
;-------------------------------------------;
STATUS_FOUR_WAIT
CLRWDT ;
BTFSC PORTB,PAUSE_IN ;
GOTO STATUS_FOUR_WAIT ;
;-------------------------------------------;
BTFSC SIGN,RUN_PAUSE ;
GOTO LOW_4 ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -