Цитата(Sholkin @ Dec 16 2007, 17:45)

какое ни будь фукцианальное устройство.
Не записываются данные в память ($60 $61 $62 $63 $64 $65 ) в этих ячейках памяти должны быть цифры от1 до 9 в реале 00 15 00 0E 00 15 иногда что то другое. В блоке подпрограммы RESET я записываю туда единицы (сделал для того чтобы определить в каком блоке портак )
Что то я не нахожу у Вас
ГДЕ Вы в "блоке подпрограммы RESET" записываете туда единицы? По коду записываете данные(($60 $61 $62 $63 $64 $65 ) из ЕЕПРОМ.
Почему бы Вам не отладить код последовательно по блокам? Сначало передачу данных по USART. Потом работу с ЕЕПРОМ.
Добавте в "подпрограмму RESET" загрузку ваших ячеек памяти конкретными значениями.. к примеру так:
Код
ldi r23,1
sts $60,r23
ldi r23,2
sts $61,r23
ldi r23,3
sts $62,r23
;и т.д.
оставьте только инициализацию передачи по USART и минимально необходимые функции.
И добейтесь правильной передачи и ПОНИМАНИЯ своего кода!
зы:
я бы посоветовал резервировать байты в памяти и работать с метками:
Код
.def tmp = r23
.dseg
mydata: .byte 1;мои данные
.cseg
.
.
//гдето в коде..
lds tmp,mydata //загрузить мои данные в РОН r23 (tmp)
Есть еще такая замечательная вещь как директива ".include":
Код
.device ATmega8
.INCLUDE "m8def.inc" ;
Пишите сие в начале и не нужно вашего:
Код
;описание переменных памяти EEPROM
.equ EECR = $1C
.equ EEARH = $1F
.equ EEARL = $1E
.equ EEDR = $1D
.equ EEMWE = 2
.equ EEWE = 1
.equ EERE = 0
.def VAR =r20
.def DATA =r21
;описание переменных USART
Сообщение отредактировал adc - Dec 17 2007, 07:22
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...