реклама на сайте
подробности

 
 
> Пишется лажа в память
Sholkin
сообщение Dec 16 2007, 14:45
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711



Здравствуйте .
Проблема вот какая . Написал давно несколько подпрограмм. Решил их вместе заставить работать как какое ни будь фукцианальное устройство. Проблема возникла в следующем.
Не записываются данные в память ($60 $61 $62 $63 $64 $65 ) в этих ячейках памяти должны быть цифры от1 до 9 в реале 00 15 00 0E 00 15 иногда что то другое. В блоке подпрограммы RESET я записываю туда единицы (сделал для того чтобы определить в каком блоке портак ) после команды RJAMP перехожу на вывод сигнала в порт у же в памяти портак (другие блоки отключал проверяю передачей по ком порту). В эмуляторе все считается и работает исправно в реале нет.
Есть вторая проблема когда к выводам 23 и 24 подвожу сигнал (для обработки ацп процессора ATmega 8) проц молчит сигнал вывода сигнала есть а по ком порту нет . Если 24 вывод посадить на землю то всё передача идёт. Код программы прилагаю .
На писан в мнемонике мне так понятнее писать и разбираться . Описал всё как мог что бы понятнее было . Если не понятно то по ходу обсуждения могу подробно описать и объяснить каждую подпрограмму .
Прикрепленные файлы
Прикрепленный файл  _____.txt ( 18.34 килобайт ) Кол-во скачиваний: 264
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jan 6 2008, 16:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Компилятор вам сообщает, что он не знает такого имени ADEN.
Надо понимать, что компилятор по умолчанию вообще ни чего не знает. Никаких имён. Имена либо объявляются заранее, либо подключаются с помощью директивы #include из заранее подготовленного файла. Такие файлы поставляются вместе с AvrStudio.
Например
Код
.include    "8515def.inc"
.

Как понятно из примера здесь подключен файл определений имён для микросхемы at90s8515. Сам файл можно найти и просмотреть. Там всё совершенно понятно. Если, к примеру, у вас какая то переменная отсутствует, то можно просмотреть такой файл и вычислить в чём загвоздка.

Поймите, мы вам не навязываем какие-то надуманные правила. Это вам существенно облегчит жизнь. Особенно при программировании на ассемблере. Приведу пример.

Например у вас есть линия управления COM портом "CTS".
Вы объявляете в начале файла

Код
.equ    CTS        = pd7; Готовность к передаче модема
.equ    PortCTS   = portd
.equ    DdrCTS   = ddrd

И далее работаете с ним по всему тексту. Например
Код
          sbi    DdrCTS,CTS  ; Готовность на вывод
.....
          sbi    PortCTS,CTS ; Установить готовность
.....
          cbi    PortCTS,CTS ; снять готовность
......


Какие преимущества?
1) вы сразу видите, что вы в данном месте делаете
2) вы однозначно избежите такой распространнённой ошибки как "cbi portd,pb7"
3) при изменении схемы и платы либо при переносе программы на другой камень вам не придётся выискивать все места связанные с тем или иным портом по всему тексту программы. Вам просто придётся внести изменения только в объявления переменной

По поводу имён.
1) Допускается (и я, к примеру использую) назначение нескольких имён одному и тому же регистру. Наложение. Правда компилятор выдаёт предупреждение об этом.
2) Если данный регистр используется как рабочий (то есть не имеет определённого предназначения), то его лучше так и обозначить, чтобы это было сразу видно. Обычно для этого используют "w" (сокращение от "work"). В некоторых МК такие регистры есть. Либо его модификации. Например wl, wh (work low, work high) или w0,w1,w2,w3. Можно использовать любую вам удобную мнемонику.

Не надо писать r16,r17. Регистра 32. Если программа хотябы средняя, то очень скоро вы абсолютно запутаетесь что это за регистры, какие используются в том или ином месте, а какие можно использовать.

До всего этого вы и сами дойдёте, только сначала понабиваете шишек.
Go to the top of the page
 
+Quote Post
adc
сообщение Jan 9 2008, 06:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(SasaVitebsk @ Jan 6 2008, 19:15) *
...
По поводу имён.
1) Допускается (и я, к примеру использую) назначение нескольких имён одному и тому же регистру. Наложение. Правда компилятор выдаёт предупреждение об этом.
...

Поделитесь пожалуйста опытом использования присвоения нескольких имён одному и тому же регистру. Где это может использоваться? Наверное это может добавить путаницу в программе? Возможно для удобства переноса на другой микроконтроллер? Заранее спасибо за разъяснения.
зы:
Код
ldi wl, (ADEN<<1)+(ADPS1<<1)+(ADPS2<<1)

Я делаю так:
Код
ldi wl,(1<<ADEN)|(1<<ADPS1)|(1<<ADPS2)


Сообщение отредактировал adc - Jan 9 2008, 06:08


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sholkin   Пишется лажа в память   Dec 16 2007, 14:45
- - =AVR=   Так писать нельзя, потому что так нельзя писать. С...   Dec 16 2007, 18:36
- - =GM=   Цитата(Sholkin @ Dec 16 2007, 14:45) Проб...   Dec 16 2007, 23:59
- - adc   Цитата(Sholkin @ Dec 16 2007, 17:45) како...   Dec 17 2007, 06:34
- - Sholkin   Здравствуйте. ADC вы не нашли где я записываю еди...   Dec 18 2007, 13:47
- - bodja74   Просто невероятное упорство автора темы или ... ...   Dec 18 2007, 16:58
|- - SasaVitebsk   Цитата(bodja74 @ Dec 18 2007, 20:58) Прос...   Dec 24 2007, 19:11
- - Sholkin   Здравствуйте. Не упорство. Конечно вы все здесь пр...   Dec 24 2007, 07:57
- - Sholkin   Здравствуйте. Александр моей целью не было каго то...   Dec 26 2007, 14:09
- - SasaVitebsk   Давайте попробуем ещё раз. Придерживайтесь следующ...   Dec 26 2007, 19:42
- - Sholkin   Здравствуйте. Первое большое спасибо за ответ . Ра...   Dec 29 2007, 08:24
- - Sholkin   Здравствуйте. Александр я и так почти везде испол...   Jan 6 2008, 15:08
|- - Qwertty   Цитата(Sholkin @ Jan 6 2008, 18:08) ldi w...   Jan 6 2008, 18:12
|- - SasaVitebsk   Цитата(adc @ Jan 9 2008, 10:06) Поделитес...   Jan 9 2008, 11:09
- - Sholkin   Привет всем. Я не говорю что вы навязываете. Прост...   Jan 9 2008, 03:37
- - Sholkin   Здравствуйте. Переписал в такой вид ;описание пер...   Jan 10 2008, 07:50
- - SasaVitebsk   Вы немножко не поняли. Эти определения, которые...   Jan 10 2008, 12:01
- - Sholkin   Здравствуйте. Документация есть (на английском пра...   Jan 14 2008, 03:58
|- - adc   Цитата(Sholkin @ Jan 14 2008, 06:58) Про ...   Jan 14 2008, 05:07
|- - adc   Цитата(Sholkin @ Jan 14 2008, 06:58) Как ...   Jan 14 2008, 06:16
- - Sholkin   Пробовал так .equ constEEPROM = 0b00111111 Ошибку...   Jan 14 2008, 07:24
|- - adc   Цитата(Sholkin @ Jan 14 2008, 10:24) Проб...   Jan 14 2008, 08:05
- - Sholkin   Здравствуйте . Где эта строчка я нашёл (выше писал...   Jan 17 2008, 04:31
|- - adc   Цитата(Sholkin @ Jan 17 2008, 07:31) Сраз...   Jan 17 2008, 06:10
- - Sholkin   Здрасте. Что то не кто не ответил . Сейчас то у ме...   Jan 21 2008, 03:37
|- - defunct   2 SasaVitebsk, adc Неплохая попытка   Jan 21 2008, 13:54
|- - SasaVitebsk   Цитата(Sholkin @ Jan 21 2008, 07:37) Здра...   Jan 21 2008, 17:53
- - Sholkin   Александр спасибо за помощь . Всё , что вы сказали...   Jan 22 2008, 03:26
|- - adc   Ну что вы все фанатично записываете адреса регистр...   Jan 22 2008, 06:26
- - Sholkin   Здравствуйте. Исправил всё как вы мне подсказали. ...   Jan 29 2008, 03:48
- - SasaVitebsk   Прерывание - это уникальное средство. Его надо пон...   Jan 29 2008, 22:44
- - Sholkin   Спасибо за ответ. До вашего ответа я немного набра...   Feb 3 2008, 14:03
- - Sholkin   Здравствуйте. Переделал прерывание от таймера след...   Feb 12 2008, 04:08
- - Sholkin   Привет всем. Что то уже больше недели смотрю тема...   Feb 20 2008, 05:07
- - Sholkin   Ребята помогите пожалуйста ? Код программы есть . ...   Feb 26 2008, 05:16
- - vet   ну что тут советовать? загружайте программу в симу...   Feb 26 2008, 05:35
- - Sholkin   Да дело то в том , что в имуляторе работает , я б...   Feb 26 2008, 07:35
- - Sholkin   Здравствуйте. Во вторник с человеком поговорил . П...   Feb 28 2008, 06:35
- - vet   только то, что бросилось в глаза. не сохраняете р...   Feb 28 2008, 07:58
- - Sholkin   Частично заставил работать. Я вот только понять не...   Mar 3 2008, 10:10
|- - SasaVitebsk   Цитата(Sholkin @ Mar 3 2008, 14:10) Прост...   Mar 3 2008, 19:31
- - IgorKossak   На этом и закончим. Sholkin, у Вас будет возможнос...   Mar 3 2008, 20:10


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 18:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016