Етот фрагмент для меня отношение к PORTA не имеет. Мъ загружаем в две ячейки памяти консантъ 5 и 1.
Объчно movlw ADR_REG исползуется если потом будем работать с FSR. Но в отношение PORTA ето будет работать если PORTA обьявлен как въход.
Код:
..... bsf STATUS,RP0
movlw 0x00
movwf TRISA;значение для инициализации защелок - въход
......
bcf STATUS,RP0
movlw PORTA ;movlw 0х05
movwf FSR
incf INDF,f ;увеличение регистра с 1 (в случае PORTA)
clrf INDF,f ; обнуление PORTA
НО....
Код:
..... bsf STATUS,RP0
movlw 0xFF
movwf TRISA;значение для инициализации защелок - вход
......
bcf STATUS,RP0
movlw PORTA ;movlw 0х05
movwf FSR
incf INDF,f ;увеличение регистра с 1 (в случае PORTA) не будет работает
Если въ захотите перебросить содержание PORTA в W то вам следует работать с инструкции
movf PORTA,w - переслать содержимого регистра PORTA в акумуляторе, разумеется можно использовать и другие как
decf PORTA,w и т.д.
Если будете работать асемблером то прочитайте какие инструкции есть в данний МК - у Microchip-a с етим все в порядке
PS:
Ariadna-on-Line, пожалуйста дайте и .lst фaйла и не в личку, а здесь. О то как человеку, никогда в жизни не видевшии
PIC Basic PRO, понять что сделал компилятор в ответ на ето
OWOut DQ, 1, [$CC, $44]PS:PS:
По дисасемблеру:
Код:
LADR_0x0022
RRF LRAM_0x22,F
MOVF LRAM_0x36,W
MOVWF FSR
MOVF LRAM_0x34,W
CALL LADR_0x0046
;.......
LADR_0x0046
XORLW 0xFF
ANDWF INDF,F
GOTO LADR_0x0049
LADR_0x0049
BSF FSR,7
ANDWF INDF,F
;.......
LADR_0x0089: ; Main Loop
MOVLW 0x05
MOVWF LRAM_0x36
Видим в Main Loop в переменной LRAM_0x36 ставится 5. В LADR_0x0022 ета величина (5) перебрасъвается в FSR. И в LADR_0x0046 что-то с ним делается через INDF. Т.е.
PIC Basic PRO решили, что работать с портом будут через индиректнъй регистр. ?????? Так решили или им так бъло удобно.
Есть одно преимущество. Посколько PORTA.0 должен работать как вход/въход то с етим BSF FSR,7 они перебрасъваются на установка TRISA, а потом через BCF FSR,7 возвращаются на PORTA.
Код:
LADR_0x0008
MOVF LRAM_0x34,W
CALL LADR_0x0046
MOVF LRAM_0x34,W
IORWF INDF,F
MOVLW 0x0A
CALL LADR_0x0059
MOVF LRAM_0x34,W
BCF FSR,7
ANDWF INDF,W
ADDLW 0xFF
Таким образом загружая константу 5 в FSR обеспечивается работа на TRISA и PORTA.