Program delší než 1024 řádků v C - Argument out of range

Ahoj,prosím nevíte někdo jak udělat…velmi dlouhé podprogramy které zasahují až přes 1026 řádek .Pořád mi to hlásí -Argument out of range (0409 not between 0000 and 03FF).Používám i tuto rutinu před Call-
movlw HIGH adress
movwf PCLATH

a nic to není platné překladač to nepřeloží…

:arrow_right: administrator: přejmenováno z "PCLATH"

Preboha, co je toto za popis problemu? Ako ti ma niekto pomoct, ak ani nenapises nic poriadne o svojom probleme?

Aky prekladac? Ake PIC? Co znamena “adress”?

Jedná se o PIC16F873A vývoj. prostředí mplab. podprogramy /tabulky/ už zasahují nad 03ff . Potřeboval bych postup jak skočit dál za tuto hodnotu.díky

Přímo můžeš adresovat 0x7ff, limit 0x3ff neexistuje.
A jinak postup z datasheetu:
[size=150]CALL OF A SUBROUTINE
IN PAGE 1 FROM PAGE 0[/size]ORG 0x500 BCF PCLATH,4 BSF PCLATH,3 ;Select page 1 ;(800h-FFFh) CALL SUB1_P1 ;Call subroutine in : ;page 1 (800h-FFFh) : ORG 0x900 ;page 1 (800h-FFFh) SUB1_P1 : ;called subroutine ;page 1 (800h-FFFh) : RETURN ;return to ;Call subroutine ;in page 0 ;(000h-7FFh)

Pozor, ak mas tabulky riesene cez “RETLW hodnota” tak si obmedzeny aj tym, ze cez “addwf PCLATH” s naslednym skokom na retlw mozes urobit maximalne skok v rozsahu 255 adries od zaciatku 255-bajtovej stranky, bez ohladu na to kde sa v ramci stranky nachadzas.