Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Размещение кода и данных в .CSEG [avr]


Автор: Valko 2.2.2014, 12:16
При написании программы решил данные вписывать перед процедурами их использующими. На определенном этапе считываемые данные начали искажаться. Проект создан в AVR Studio 5.0 отладка в Proteus 7.7 Sp2.
Когда отлаживаю с точками останова в Студио все Ок, а в Протеусе считывается не правильно.
Когда вписал перед Code7 семь байт все пошло, меньше не идет. Не могу понять почему так? 
Код

...
.DSEG
 Ind:    .byte 7  
.CSEG                   
F: .db 0,0,0,0,0,0,0  
Code7: .db $FC, $60, $DA, $F2, $66, $B6, $BE, $E0, $FE, $F6
;--------------------------------------------------------------------------------
Decode:
   clr xh
   ldi xl,low(ind)+7   
   mov tmp,Countr       
   rcall dec3
   mov tmp,Countp
   rcall Cod7
   st x,r0
   dec xl
   mov tmp,Countl
   rcall Dec3
ret
;--------------------------------------------------------------------------------
Dec3:
   rcall Num
   rcall Cod7
   st x,r0
   dec xl
   tst c2  
   breq De1
 De0:
   mov tmp,c2
   rcall Cod7
   st x,r0
   rjmp De2
 De1:
   tst c1
   brne De0
 De2:
   dec xl
   tst c1
   breq De3
   mov tmp,c1
   rcall Cod7
   st x,r0
 De3:
   dec xl
ret
;--------------------------------------------------------------------------------
Cod7:
ldi zh,high(Code7*2)
ldi zl,low(Code7*2)
add zl,tmp
lpm                  
ret

Автор: Romikgy 3.2.2014, 10:32
Если пишете на асме , учитываете таблицу векторов ?

Автор: Valko 4.2.2014, 09:48
А разве таблица векторов не входит в общее адресное пространство сегмента кода ?

Автор: Romikgy 4.2.2014, 11:32
входит , поэтому его и надо учитывать, т.к. программите на асме

Автор: Valko 4.2.2014, 23:32
Извините, я не указал, что прописал все вектора прерываний, это должно быть.
Код

 .cseg
 .org 0
rjmp init
   reti    ;1
   reti    ;2
   reti    ;3
   reti    ;4
   reti    ;5
   reti    ;6
   reti    ;7
   reti    ;7
   reti    ;8
   reti    ;9
   reti    ;10
   reti    ;11
   reti    ;12
   reti    ;13
   reti    ;14
   reti    ;15
   reti    ;16
   reti    ;17
   reti    ;18
 ; *************** Инициализация параметров ************************
init:


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)