Zdravim,mohl by mi někdo prosím poradit, proč překladač píše tuto chybu ? Jakoby byl překročen rozsah adres pro skoky,ale program není velký. Chyba na řádku 63. Zkoušel jsem kde co,ale tuhle podmínku už mi to nevezme. Zde je část s chybou, případně pošlu celé.
Děkuji moc za případný nápad.
0026 C2B2 45 CLR LED
0028 7D2C 46 MERI: MOV R5,#44 ;46*10ms=500ms test 4,347KW [W=1/t x 2000] W,s
002A B2B7 47 cpl mer
002C 20B354 48 SMI4: JB IMP,JE4KW ;proved funkce pri 4,3KW
002F 120104 49 CALL WAIT10
0032 DDF8 50 DJNZ R5,SMI4
0034 B2B7 51 CPL MER
0036 7D0E 52 MOV R5,#14
0038 20B363 53 SM3: JB IMP,JE3KW ;proved funkce pri 3,3KW
003B 120104 54 CALL WAIT10
003E DDF8 55 DJNZ R5,SM3
0040 B2B7 56 CPL MER
0042 7D1B 57 MOV R5,#27
0044 20B372 58 SX2: JB IMP,JE2KW ;proved funkce pri 2,3KW
0047 120104 59 CALL WAIT10
004A DDF8 60 DJNZ R5,SX2
004C B2B7 61 CPL MER
004E 7D43 62 MOV R5,#67
0050 20B300 63 SX1: JB IMP,J1KW ;proved funkce pri 1,3KW
****---------------------------------------^
****ERROR #18: Target address exceeds relative address range
0053 120104 64 CALL WAIT10
0056 DDF8 65 DJNZ R5,SX1
0058 B2B7 66 CPL MER
Fórum › Mikrokontroléry
ASM51 s 89c2051 a ERROR #18: Target address exceeds relative address range, už nevim co s tim
Z programu jsem musel vypustit jednu čekací smyčku,ve které bylo testování vstupu. Tím se jakoby uvolnila adresa, a program to přeložilo v pořádku. Nechápu ale proč je to takhle omezené,kolik testování pinů je možné v programu provádět, a jak se případně vyhnout tomuto omezení. Myslel jsem že testování JB,CALL,DJZ apod není omezeno. Za případné nápady děkuji.
Děkuji za odpověď, skok od JNB nemůže být delší než 255 adres, nebo žádný skok (ani skok za návěstím příkazem JMP). Případně jestli jde potom nějak ovlivnit aby bloky kam se skáče byly při překládání uloženy za sebe. Přišlo mi že by to i v tomto programu nemělo být dále než 255 adres.
Musím se opravit. U instrukcí jako JB je skok určený hodnotou jednoho znaménkového bajtu.
Takže rozsah je -128 až +127 adres.
AJMP má rozsah 2 kB, stačí např. pro celou paměť 2051.
LJMP a JMP mají rozsah 65 kB.
Případně jestli jde potom nějak ovlivnit aby bloky kam se skáče byly při překládání uloženy za sebe.
Bloky jsou uloženy tak jak je napíšeš.
Ale než si lámat hlavu s tím aby všude vyšly tyhle krátké skoky, je jednodušší použít to co jsem navrhl.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Error 207, zaboha nevim co s tim — založil fak.gesho
Kun po sachovnici - Toroid...... nevim co s tim pomoc — založil Dave-CZ
Index exceeds matrix dimensions — založil Jacob
HTML 5 range + javascript — založil Anonym
Hledaní hodnoty v range. — založil Frantisek Rad
Moderátoři diskuze