Conditional Execution using Bit Test btfsc Explain what is t
Conditional Execution using Bit Test (btfsc).
Explain what is the operation of the following code? What is the output of the code?
INCLUDE \"P18F242.INC\"
CBLOCK 0x0
loc,out
ENDC
org 0
goto main
org 0x0200
main
;movlw 0
movlw 1
movwf loc
Ltop
btfsc loc, 0
goto loc_lsb_is_1
movlw 4
movwf out
movlw 2
movwf out
movlw 3
movwf out
loc_lsb_is_1
movlw 1
movwf out
movlw 6
movwf out
movlw 5
movwf out
movlw 8
movwf out
goto Ltop
end
Solution
INCLUDE \"P18F242.INC\" # include the header file
CBLOCK 0x0 # specifies the first address or first free RAM location
loc,out # variables
ENDC # indicates the end of the list of variables
org 0 # tells the assembler where the program is to reside in memory
goto main # directs the microcontroller to beginning of the program
org 0x0200 # tells the assembler where the main is to reside in memory
main
;movlw 0 # put 0 in register w
movlw 1 # put 1 in register w
movwf loc # put 1 from the register to loc variable
Ltop
btfsc loc, 0 # skip of loc is not 0
goto loc_lsb_is_1 # jumps to label loc_lsb_is_1
movlw 4
movwf out # put 4 from the register to out variable
movlw 2
movwf out # put 2 from the register to out variable
movlw 3
movwf out # put 3 from the register to out variable
loc_lsb_is_1
movlw 1
movwf out
movlw 6
movwf out
movlw 5
movwf out
movlw 8
movwf out
goto Ltop # jumps to label ltop
end # end of main
Output
Here we have two variables loc and out. These variables are given various values. Based on the value of loc the value of out is assigned repeatedly.

