Например TDA7294

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

Текущее время: Вт июл 29, 2025 08:10:47

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 13, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 10, 2009 22:48:01 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1392
Рейтинг сообщения: 0
smac писал(а):
[ такое ощущение, что многим легче спросить и потом день ждать когда ответят, чем за 5 минут найти и разобраться в команде используя, например AVR Instruction Set - http://www.atmel.com/atmel/acrobat/doc0856.pdf.

согласен на 100 %. лучше разбираться самому....но была раньше такая работа на которой была возможность посидеть спокойно и чтото поделать.... а сейчас день пролетает как за 5 минут и я очень благодарен вам за понимание и помощь :)
ПС а на ссылку открывается такое вот окно :(
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 11, 2009 01:50:15 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
vistador писал(а):
ПС а на ссылку открывается такое вот окно :(

Прошу прощения, что не проверил, в ссылку вкралась лишняя точка в конце, уже поправил в своем сообщении.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 11, 2009 01:57:04 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1392
Рейтинг сообщения: 0
спасибо...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Ассемблер
СообщениеДобавлено: Чт мар 12, 2009 12:05:53 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Пт мар 23, 2007 19:51:45
Сообщений: 29
Откуда: Иркутск
Рейтинг сообщения: 0
Начал изучать ассм самостоятельно. Заметил, что в программах часто встречается загрузка регистров примерно таким способом:

ldi R16, (1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)

Попытался разобраться, что это такое. Почитал описание упомянутых в вышеприведённом примере битов регистра USICR (МК ATTiny2313) и получил, что в данном случае в регистр R16 загружается байт 0b00011011. Вроде бы понятно. Хотя и непонятно, для чего его так записали :? .
Но в следующем примере мне встретилось ещё хуже :cry: :

ldi R16, (1<<USIWM0)|(0<<USICS0)|(1<<USITC)

Что такое (0<<USICS0) ? Это просто ноль во втором разряде двоичного числа? Тогда зачем его так записывать? В других разрядах тоже есть нули, но они получаются как бы сами собой и никто на них внимания не обращает... :shock: А этот ноль чем лучше других? Чего я недопонимаю?


Последний раз редактировалось Тихоня Чт мар 12, 2009 12:33:20, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 12, 2009 12:27:34 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вс янв 07, 2007 01:45:48
Сообщений: 491
Откуда: Российская Федерация, будь она неладна...
Рейтинг сообщения: 0
Подобные записи используются для простоты визуального восприятия кода.
Цитата:
Что такое (0<<USICS0) ? Это просто ноль? Тогда зачем его так записывать? В других разрядах тоже есть нули, но они получаются как бы сами собой и никто на них внимания не обращает... А этот ноль чем лучше других?

Это обычный ноль, а записан он так, опять же, чтобы было чётко видно значение бита USICS0.
Цитата:
В других разрядах тоже есть нули, но они получаются как бы сами собой и никто на них внимания не обращает

На другие разряды никто не обращает внимания, т.к. в данном конкретном месте кода программы их значение не важно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 12, 2009 12:54:50 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Пт мар 23, 2007 19:51:45
Сообщений: 29
Откуда: Иркутск
Рейтинг сообщения: 0
Pooher писал(а):
На другие разряды никто не обращает внимания, т.к. в данном конкретном месте кода программы их значение не важно.

Ну, глядя в программу, я бы не сказал, что в ней не важно, чему будет равен, например, бит USICS1... Если в него записать 1, то полная чепуха получится. Но о нём просто решили не говорить. Молча записали ноль и всё. А на USICS0 ещё и пальцем показали.
Но в общем идея примерно прояснилась. Спасибо.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 14, 2009 20:40:04 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Есть ли такие такие видеоуроки Ассемблера?

http://www.youtube.com/watch?v=4VbGbGVmbqo&feature=related

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 15, 2009 22:42:04 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Помогите пожалуйста!

Как отличается написание с пробелами и их количеством?

вот пример:

.include "d:\avr\avrasm\appnotes\2313def.inc"

.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20

.cseg
.org 0
ldi Temp, Ob11111111 ; присвоение константы
out DDRB,Temp ; вывод

; выводим число 11010010 на светодиоды

ldi Temp,Ob11010010 ; присвоение константы
out PortB,Temp ; вывод на индикацию

.cseg
.org 0

ldi Temp,Ob11111111
out DDR,Temp
Begin: ldi Temp, Ob00000001 ; зажигаем первый светодиод
out PortB,Temp

ldi Temp1,0 ; задержка
ldi Temp2,0
ldi Temp3,10
Loop: dec Temp1
brine loop1

dec Temp2
brine Loop1

dec temp3
brine Loop1



ldi Temp, Ob00000010 ; зажигаем второй светодиод
out PortB,Temp



не знаю, видно ли здесь, но после некоторых операторов стоит много пробелов. От их числа Много зависит? а если строчек (интер нажимаем)?

И что бедет если я напишу, например, не out PortB,Temp а out PortB, Temp, или out PortB, Temp?

Что будет?

Ответьте пожалуйста, заранее Благодарен!!!

вот еще вопрос по ходу: что такое Temp???

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 00:15:13 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
ничего не будет... не важно сколько пустых строк или пробелов, главное соблюсти синтаксис- поставь программу VMLAB и эксперементируй сколько влезет, там даже для наглядности панель есть с кнопками и светодиодами- можешь под них код писать, как под настоящую панель ;)

TEMP- это так регистр обозвали, некоторым неудобно писать out PORTB,R16, для наглядности обзывают регистры.
TEMP как название -это такая помойка, ее везде для одноразовых вычислений используют. Также можешь назвать R16 DATA или ZNACHENIE, PEREMENNAYA, короче как тебе удобнее.


Последний раз редактировалось Alexeus Пн мар 16, 2009 00:20:17, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 00:18:11 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Stalker46 писал(а):
Помогите пожалуйста!
Как отличается написание с пробелами и их количеством?
...

Пробелов может быть сколько угодно, главное, чтобы о ни не разделяли ключевые слова (команды, имена регистров и т. п. ) т. е. нельзя писать
Код:
o ut P ORTB, r 16
остальное не запрещено.
Вообще у Вас по-видимому ошибки связаны с Ob11010010, это потому что у Вас там буква 'O' перед b вместо цифры 0.
Stalker46 писал(а):
вот еще вопрос по ходу: что такое Temp

"Ну, вы, блин, даете" - (це) Михалыч.
Код:
.def    Temp=R16
.def    Temp1=R17

директива def задает символьное имя регистру, т.е после приведенных строк вместо r16 можно писать Temp, вместо r17 - Temp1, и т. д. А вообще RTFM.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 07:36:29 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Понятно все что Вы все сказали, только не понятно одно опять же:

А является ли ключевым словом это

ldi Temp,PortB
а можно ли так
ldi Temp, PortB

ldiTemp, PortB???

_________________
Не умеешь - не берись, но не взявшись не научишься...


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

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
Stalker46 писал(а):
Понятно все что Вы все сказали, только не понятно одно опять же:

А является ли ключевым словом это

ldi Temp,PortB
а можно ли так
ldi Temp, PortB

ldiTemp, PortB???


последнее точно бред, такое не прокатит... (а что выхотите сделать присвоив темпу портб?)
вы хоть раз компилятор то запускали? если что не так- он ругается, если не ругается на с то тыся чпр обел ов и вместеслитыеслова, то все Ок, будет работать :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 11:16:20 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Stalker46 писал(а):
Понятно все что Вы все сказали, только не понятно одно опять же:

А является ли ключевым словом это

ldi Temp,PortB
а можно ли так
ldi Temp, PortB

ldiTemp, PortB???

Вы бы лучше описание инструкций АВР почитали (искать можно на этом форуме по ключевы словам AVR Instruction Set, собственно ссылка на документ приведена мной на предыдущей странице этой темы).
Если Вы командой
Код:
ldi Temp,PortB
пытаетесь считать содержимое порта B то у Вас ничего не получится, ибо читать нужно так
Код:
in Temp, PortB

Командой ldi Temp,PortB максимум что может получиться - это вы загрузите адрес порта в регистр Temp.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 17, 2009 00:30:20 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
да и состояние порта не так считывается а так:
Код:
 in temp,PinB


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 17, 2009 00:46:27 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Stalker46 писал(а):
Понятно все что Вы все сказали, только не понятно одно опять же:

А является ли ключевым словом это

ldi Temp,PortB
а можно ли так
ldi Temp, PortB

ldiTemp, PortB???

Да, кстати, рекомендую пистать названия регистров так, как они записаны в файле определений (например m8def.inc если речь идет о мега8, для др. контроллера будет другой файл), т. е. заглавными буквами: PORTB, PINB, DDRB.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 17, 2009 17:44:03 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Пт мар 23, 2007 19:51:45
Сообщений: 29
Откуда: Иркутск
Рейтинг сообщения: 0
Я вижу, здесь немало знающих людей собралось: надеюсь и мне подскажут :wink:
Надо прочитать бит по одному адресу из пространства ввода-вывода (I/O space) и записать его по другому адресу и номеру разряда (тоже в I/O space). Как это сделать покороче?
У меня что-то больно громоздко получается: скопировать байт через IN в регистровый файл, выделить бит, проанализировать его значение, а потом, в зависимости от результата, SBI или CBI...
Неуж-то короче нельзя? :roll:


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

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
Анализировать бит в I/O можно и не копируя. Смотри команды sbis и sbic.
А если копировать, то можно использовать команды bst и bld. Хотя всё равно длинновато получается......
Код:
in   temp,port_in
bst  temp,bit_in
in   temp,port_out
bld  temp,bit_out
out  port_out,temp


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 17, 2009 22:30:19 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вс янв 07, 2007 01:45:48
Сообщений: 491
Откуда: Российская Федерация, будь она неладна...
Рейтинг сообщения: 0
Тихоня писал(а):
Неуж-то короче нельзя?

Код:
sbic PinX, X
rcall BitSet  ; перейти по метке, если бит Х в PinX установлен
sbis PinX, X
rcall BitReset ; перейти по метке, если бит Х в PinX сброшен

_________________
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 18, 2009 09:21:09 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Пт мар 23, 2007 19:51:45
Сообщений: 29
Откуда: Иркутск
Рейтинг сообщения: 0
YurkaM, Pooher, спасибо! :))
Оба варианта по-своему хороши. У меня есть теперь пища для размышлений.
Это мне было нужно для тестовой программки, помогающей понять работу МК, а именно: светодиодик должен показывать состояние одного из флагов. Встроенный в AVR Studio симулятор дал мне повод усомниться в корректности симуляции интерфейса USI, почему я и решил поэкспериментировать на железе. А заодно и азы программирования осваиваю, совмещаю, так сказать, полезное с полезным :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 25, 2009 06:37:19 
Родился

Зарегистрирован: Вс янв 14, 2007 18:57:04
Сообщений: 8
Рейтинг сообщения: 0
Люди, подскажите пожалста. Программку пишу и захотел сделать сохранение данные в ЕЕПРОМ. Программа данные туда успешно записывает, но вот считывает почему-то все нули. Уже пробую просто вывести в порт, на котором весят светодиоды то что прочтено из ЕЕПРОМ. Результат аналогичен :( Подскажите в каком месте криво сделано


Вложения:
EEPROM.asm [1.75 KiB]
Скачиваний: 498
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 13, , , ...  

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 12


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

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


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