Most már nem állítok semmit csak kérdezek, mint Erich von Däniken. ;)
Itt alant a kis programomban: (-f -X -S 2)
A HpInterrupt honnan tudja, hogy a Bank4 jó? (se banksel, se assume)
A Start után hogyan lesz az __ACTIVE_BANK_ADDR Bank4? (van előtte egy return, banksel Bank15 - de a legelején, és assume Bank15)
#include <P18F24K50.INC>
list n=0, st=off
;RAM
cblock 400
Bank4:0
Bank4_data
endc
cblock 500
Bank5:0
Bank5_data
endc
;SFR
cblock 0f00
Bank15:0
endc
;code
org 0
banksel Bank15
goto Start
;Interrupt
org 8
; assume Bank4
HpInterrupt
; movf ANSELA, w, b
movf Bank4_data, w, b
; movf Bank5_data, w, b
retfie FAST
Bank4test
; movf ANSELA, w, b
movf Bank4_data, w, b
; movf Bank5_data, w, b
return
;entry
Start
assume Bank15
messg "__ACTIVE_BANK_ADDR: #v(__ACTIVE_BANK_ADDR/100)"
;->Message[301]: MESSAGE: "__ACTIVE_BANK_ADDR: 4"
; banksel Bank15
;->Error[1507] : Register in operand not located in RAM Bank 4. Ensure that Bank bits are correct: 'ANSELA' (Addr: 0x0F5B; Bank_15: 0x0F00; Offs: 0x005B)
movf ANSELA, w, b
; movf Bank4_data, w, b
; movf Bank5_data, w, b
assume Bank4
banksel Bank4
call Bank4test
; movf ANSELA, w, b
movf Bank4_data, w, b
; movf Bank5_data, w, b
; banksel Bank5
call Bank4test
; movf ANSELA, w, b
movf Bank4_data, w, b
; movf Bank5_data, w, b
Loop
bra Loop
end