帝 ver.4(α) for PIC16F877 テストコード No.3
目的
・分岐命令(BTFSC/BTFSS/DECFSZ)のテスト
検証コード
list p=16f877
#include
cnt1 equ 10h
cnt2 equ 11h
org 0h
goto init
org 4h
init
clrf cnt1
bsf STATUS,RP0
clrf TRISB
bcf STATUS,RP0
loop
movf cnt1,w ;if(cnt1-0x0=0){goto phase_0}
sublw 0x0
btfsc STATUS,Z
goto phase_0
movf cnt1,w ;if(cnt1-0x1=0){goto phase_1}
sublw 0x1
btfsc STATUS,Z
goto phase_1
movf cnt1,w ;if(cnt1-0x2=0){goto phase_2}
sublw 0x2
btfsc STATUS,Z
goto phase_2
movf cnt1,w ;if(cnt1-0x3=0){goto phase_3}
sublw 0xf ;else{goto init}
btfsc STATUS,Z
goto phase_3
goto init
;==================================================================
phase_0
movlw 0x8
movwf cnt2
movlw 0x01
movwf PORTB
phase_0_loop
rrf PORTB,f
decfsz cnt2,f
goto phase_0_loop
goto loop
;==================================================================
phase_1
movlw 0x8
movwf cnt2
movlw 0x80
movwf PORTB
phase_1_loop
rlf PORTB,f
decfsz cnt2,f
goto phase_1_loop
goto loop
;==================================================================
phase_2
movlw 0x8
movwf cnt2
movlw 0xF0
movwf PORTB
phase_2_loop
swapf PORTB,f
decfsz cnt2,f
goto phase_2_loop
goto loop
;==================================================================
phase_3
movlw 0x8
movwf cnt2
movlw 0xFF
movwf PORTB
phase_3_loop
comf PORTB,f
decfsz cnt2,f
goto phase_3_loop
goto loop
end