Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср июл 30, 2025 10:33:43

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]    , 2, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 04, 2008 12:13:05 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Артур писал(а):
Люди, Будьте добры!
Расскажите пожалуйста про инициализацию стека?

это выглядит примерно так:
Код:
    ldi Temp, low(RAMEND)
    out SPL, Temp ; инициализируем указатель стэка

но будьте внимательны: если памяти в МК больше 256 байт - надо еще инициализировать и SPH! в обучалке, если я не ошибаюсь, об этом написано - прочтите.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 04, 2008 13:50:16 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
Извиняюсь! Не внимательно читал обучалку!
Про стек тут:
http://www.radiokot.ru/start/mcu_fpga/avr/08/

_________________
Век живи! - Век учись!
ICQ-15B87330h


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 07, 2008 10:22:13 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт июл 10, 2007 23:15:17
Сообщений: 167
Откуда: Магнитогорск
Рейтинг сообщения: 0
вопрос
хочу написать прогу на асме для меги64
в начале программы подставляю файл с описанием регистров
m64def.inc при ассеблирование у меня вылетает ошибка
на строчку где в файле описания регистров написано ATmega64
типа иллегал девайс пользуюсь виндосовским асмом для авр
допустим беру другой файл с описанием регистров для другого проца на типа 8515def.inc всё ок может асемблер неподдерживает работу с мегой


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 07, 2008 10:29:18 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ipkin писал(а):
у меня вылетает ошибка
на строчку где в файле описания регистров написано ATmega64
типа иллегал девайс
уж сколько раз твердили миру... да воз и ныне там... :(

ну где эта строка? что за компилятор? какая у него версия? и т.п. подробности где?!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 07, 2008 10:59:35 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт июл 10, 2007 23:15:17
Сообщений: 167
Откуда: Магнитогорск
Рейтинг сообщения: 0
ну где эта строка? что за компилятор? какая у него версия? и т.п. подробности где?![/quote]
вот фрагмент файла m64def.inc

;*
;* in r16,PORTB ;read PORTB latch
;* sbr r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
;* out PORTB,r16 ;output to PORTB
;*
;* in r16,TIFR ;read the Timer Interrupt Flag Register
;* sbrc r16,TOV0 ;test the overflow flag (use bit#)
;* rjmp TOV0_is_set ;jump if set
;* ... ;otherwise do something else
;***************************************************************************

;**** Specify Device ****
.device ATmega64 РУГАЕТСЯ НА ЭТУ СТРОКУ

;*****************************************************************************
; I/O Register Definitions
;*****************************************************************************

;**** Memory Mapped I/O Register Definitions ($FF-$60) ****
.equ UCSR1C = $9D
.equ UDR1 = $9C
.equ UCSR1A = $9B
.equ UCSR1B = $9A


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 07, 2008 13:52:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ну так заремарьте эту строку нафиг! или перейдите на компилятор, которому про atmega64 известно

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 07, 2008 19:34:40 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн ноя 05, 2007 12:44:43
Сообщений: 87
Откуда: C:\Russia\SPb
Рейтинг сообщения: 0
Если ассемблер ругается на какую то строку из inc файла, то просто закомментировать её и всё.

Например tavrasm ругается на строки:
.equ OR = 3
.equ Z = 1
в некоторых инклудах.

_____

tych, тема про ассемблер, не надо пожалуйста свой СИ здесь впаривать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 09, 2008 05:26:15 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
Всем привет!
И снова проблема! Хочу передать некое число по одному пину но получается огромный код! Скажите как его сделать компактней? И правильно ли я делаю?
Код:
ldi temp,0b00111010; передаем число 58 а принимаем 92 (перевёрнутое)
;***********************
;передача по одному биту на pin0 порта В
ldi temp1,0
out portb,temp1
rcall delay
ldi temp1,1
out portb,temp1
rcall delay
ldi temp1,0
out portb,temp1
rcall delay
ldi temp1,1
out portb,temp1
rcall delay
ldi temp1,1
out portb,temp1
rcall delay
ldi temp1,1
out portb,temp1
rcall delay
ldi temp1,0
out portb,temp1
rcall delay
ldi temp1,0
out portb,temp1
rcall delay
;*
**
*********************
;задержка
delay:
          ldi temp2,0
    loop: dec temp2
           brne loop

              ldi temp3,0     
       loop1:
              dec temp3
              brne loop1
ret
;***********************************

Спасибо!

_________________
Век живи! - Век учись!
ICQ-15B87330h


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 09, 2008 08:26:53 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
не правильно. правильно бедут использовать в цикле сдвиг числа через флаг переноса, анализ флага переноса и вывод 0 или 1 соответственно.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 09, 2008 12:30:32 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
ARV писал(а):
не правильно. правильно бедут использовать в цикле сдвиг числа через флаг переноса, анализ флага переноса и вывод 0 или 1 соответственно.

А можно примерчик? Мне нужно чтоб другие выводы не использовались

_________________
Век живи! - Век учись!
ICQ-15B87330h


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 09, 2008 15:08:03 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн ноя 05, 2007 12:44:43
Сообщений: 87
Откуда: C:\Russia\SPb
Рейтинг сообщения: 0
А примерно вот так:
Код:
        ldi Temp, 0b00111010 ; число которое хотим передать
        ldi Temp1, 8 ; счетчик битов
_01:    ror Temp   
        brcc _02
        sbi PORTB, 0 ; установить нулевой бит
        rjmp _03
_02:    cbi PORTB, 0 ; сбросить нулевой бит
_03:    dec Temp1 ; уменьшить счетчик
        brne _01


В зависимости с какого бита надо начинать, младшего или старшего, то сответственно выбираем команду ror или rol


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 09, 2008 15:41:18 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
Спасибо огромное Brutaller РАБОТАЕТ!

_________________
Век живи! - Век учись!
ICQ-15B87330h


Последний раз редактировалось Артур Пн мар 10, 2008 05:30:00, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 10, 2008 05:28:10 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
Здравствуйте! А не могли бы Вы рассказать подробно про такие команды как ROR и BRCC в обучалке про них ничего не сказано :(
А у меня в книге написано так:

ROR - Rd(7)<C, Rd(n)<Rd(n+1),C<Rd(0)

BRCC - if(C=0)PC<PC+k+1

что совсем не понятно как оно устроено!
Спасибо!

_________________
Век живи! - Век учись!
ICQ-15B87330h


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 10, 2008 11:16:59 
Артур писал(а):
ROR - Rd(7)<C, Rd(n)<Rd(n+1),C<Rd(0)

Что же тут непонятного?


С --> B7 --> B6 --> B5 --> B4 --> B3 --> B2 --> B1 --> B0 -->
|_____|


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 10, 2008 17:36:03 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт июл 10, 2007 23:15:17
Сообщений: 167
Откуда: Магнитогорск
Рейтинг сообщения: 0
Попробую ещё в этом разделе

хочу подружить мегу64 и ммс карту 32метра (меньше не нашёл хотя устроила бы и 8метровая)
может у кого есть пример на асме т.к си пока не знаю
задача стоит такая на карте будут храниться граф образа в bin т.е мне не нужна файловая система флэшка будет использоваться как обычная мс памяти и ещё где можно найти схемку прогера чтобы прошить карту именно как мс памяти не кардридер


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 11, 2008 20:40:02 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн ноя 05, 2007 12:44:43
Сообщений: 87
Откуда: C:\Russia\SPb
Рейтинг сообщения: 0
Артур писал(а):
Спасибо огромное Brutaller РАБОТАЕТ!

Это хорошо что работает ;)
Правда сказать, не совсем понял, что и куда вы передаете таким образом. Ну да ладно, не это главное.

Артур писал(а):
Здравствуйте! А не могли бы Вы рассказать подробно про такие команды как ROR и BRCC в обучалке про них ничего не сказано
А у меня в книге написано так:

ROR - Rd(7)<C, Rd(n)<Rd(n+1),C<Rd(0)

BRCC - if(C=0)PC<PC+k+1

что совсем не понятно как оно устроено!
Спасибо!

ROL / ROR побитное вращение регистра через флаг переноса, соответственно влево/вправо.
Т.е. получается что мы выдвигаем один бит командой ROR во флаг переноса и взависимости от того, что окажется во флаге, делаем переход в нужное место. И так восемь раз.
BRCC - Branch if Carry Cleared (Переход если флаг переноса очищен).


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 15, 2008 06:40:03 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
Скажите пожалуйста а что нельзя чтоли просто скопировать бит одного РОН в Другой? ну например нулевой бит или третий? Спасибо!

_________________
Век живи! - Век учись!
ICQ-15B87330h


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 15, 2008 09:49:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Артур писал(а):
Скажите пожалуйста а что нельзя чтоли просто скопировать бит одного РОН в Другой? ну например нулевой бит или третий? Спасибо!
просто взять и скопировать одной командой - нельзя.
для AVR придется делать примерно так:
1. Запомнить во флаге Т бит из исходного регистра командой BST
2. Сохранить состояние флага Т в нужном бите второго регистра командой BLD

или

1. Выделить командой ANDI значение бита в исходном регистре
2. Подавить командой ANDI значение бита в приемном регистре
2. Командой OR установить значение в приемном регистре

в первом случае "место" исходного бита и приемного может быть разным (т.е. берем 1-й бит и ставим его на место 5-го бита), во втором "место" будет одинаковым.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 16, 2008 08:03:18 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн дек 04, 2006 09:50:08
Сообщений: 157
Откуда: Vladivostok
Рейтинг сообщения: 0
Спасибо!
Я так и думал что нельзя! Пробовал копировать в флаг Т, нокогда вынимаю из флага Т бит и вставляю в регистр PORTB0 компилятор VMLAB ругается я почему и спрашивал!

_________________
Век живи! - Век учись!
ICQ-15B87330h


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 16, 2008 14:25:03 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн ноя 05, 2007 12:44:43
Сообщений: 87
Откуда: C:\Russia\SPb
Рейтинг сообщения: 0
Артур писал(а):
Пробовал копировать в флаг Т, нокогда вынимаю из флага Т бит и вставляю в регистр PORTB0 компилятор VMLAB ругается я почему и спрашивал!

Что за PORTB0 ??? Не знаю такого :))
И вообще то PORTB это вовсе не РОН, а I/O Port. К РОН относятся регистры r0-r31.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]    , 2, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y