Ванюшка писал(а): У меня почему-то "0" на выходе только в одном случае: PA3 - "1", PA4 - "1", PA5 - "0". Во всех остальных случаях PC0 - "1"
Если в коде есть "тупейшие" ошибки, не судите меня строго, это моя первая программа.
Ассемблер (ASM) для AVR в вопросах и ответах
-
Black_Wolf
- Родился
- Сообщения: 19
- Зарегистрирован: Вс окт 27, 2013 14:07:37
- Реклама
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вот так проще наверное в Вашем случае?
Код: Выделить всё
.equ Input = ((1<<PA3)|(1<<PA4)|(1<<PA5))
.equ Condition = ((1<<PA3)|(1<<PA4))
.equ Output = PORTC
loop:
in r16, PINA
andi r16, Input
cpi r16, Condition
breq set_to_zero
sbi Output, 0
rjmp loop
set_to_zero:
cbi Output, 0
rjmp loopСтавим плюсы: )
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Всем огромнейшее СПАСИБО. Я не правильно высчитывал таблицу истинности.
ibiza11 спасибо за код, в котором, я хотя многих инструкций еще не знаю и приемов не понимаю, т.к. я только-только начинающий, думаю разобраться.
ibiza11 спасибо за код, в котором, я хотя многих инструкций еще не знаю и приемов не понимаю, т.к. я только-только начинающий, думаю разобраться.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
есть некая незамысловатая ф-ция
что значат данные строки ?
Код: Выделить всё
;*************************************************************************
; delay half period
; For I2C in normal mode (100kHz), use T/2 > 5us
; For I2C in fast mode (400kHz), use T/2 > 1.3us
;*************************************************************************
.stabs "",100,0,0,i2c_delay_T2
.stabs "i2cmaster.S",100,0,0,i2c_delay_T2
.func i2c_delay_T2 ; delay 5.0 microsec with 4 Mhz crystal
i2c_delay_T2: ; 4 cycles
rjmp 1f ; 2 "
1: rjmp 2f ; 2 "
2: rjmp 3f ; 2 "
3: rjmp 4f ; 2 "
4: rjmp 5f ; 2 "
5: rjmp 6f ; 2 "
6: nop ; 1 "
ret ; 3 "
.endfunc ; total 20 cyles = 5.0 microsec with 4 Mhz crystal
;*************************************************************************Код: Выделить всё
.stabs "",100,0,0,i2c_delay_T2
.stabs "i2cmaster.S",100,0,0,i2c_delay_T2Tell Me The Truth
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
В AVR-ассемблере встроенном в студию (4) я таких директив не видел...
источник7.54 .stabd, .stabn, .stabs
Эти три директивы, начинающиеся с .stab, формируют символы (смотрите главу 5 "Символы") для использования их в символических отладчиках. Эти символы не входят в hash-таблицу as: на них не может быть как-либо ссылок в исходном файле
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
почему в выше нриведенной ф-ции написано так
а не
Код: Выделить всё
1:
2:
3:Код: Выделить всё
1f:
2f:
3f:Tell Me The Truth
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Фиг его знает, нужно читать хелп к этому ассемблеру. Может быть из-за того, что это какая-то функция (похожа на макрос в обычном AVR-ассемблере) и суффикс f стоит как указатель на то, что это не абсолютная метка, а метка в конкретно этой функции.
Короче нужно выяснить что это за ассемблер, а там видно будет...
Короче нужно выяснить что это за ассемблер, а там видно будет...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
похоже на самодельно определенные макросы...
только вот явно не avrasm...
предположительно
rjmp 2f обращается к выполнению какого-то фрагмента 2f(1f,3f,4f,5f), которого в вышеприведенном тексте нету... а чего в тех фрагментах нарисовано, только их автору ведомо.
текущие метки 1: и иже сними отношение к 1f и остальным имеют через пока неведомый кусочек.
или определение "локальной метки" (у каждого компилятора по-своему)
А чего на самом деле только справка по тому компилятору поможет.
только вот явно не avrasm...
предположительно
rjmp 2f обращается к выполнению какого-то фрагмента 2f(1f,3f,4f,5f), которого в вышеприведенном тексте нету... а чего в тех фрагментах нарисовано, только их автору ведомо.
текущие метки 1: и иже сними отношение к 1f и остальным имеют через пока неведомый кусочек.
или определение "локальной метки" (у каждого компилятора по-своему)
А чего на самом деле только справка по тому компилятору поможет.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Короче, Свежий ошибся веткой 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я бы сказал больше похоже на листинг какого-то компилятора...похоже на самодельно определенные макросы...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Помогите решить простые задачки на ассемблере (типо лабораторная работа)
1) Задать 9 однобайтовых чисел расположенных в EEPROM, начиная с адреса 0x0B05. Найти отрицательные элементы массива и записать их в ОЗУ начиная с адреса 0x0D99. Для адресации использовать индексные регистры.
2) Произвести вычисление следующего выражения R=4*x2*x3+x1^4-3*x3 операнды целые однобайтные числа находящиеся в ОЗУ, начиная с адреса 0x0220. Результат заносится в память, начиная с адреса 0x0228.
3) К порту B подключено 8 светодиодов. Необходимо включить 0 и 1 биты на 0,2 мс, выключить их на 0,1 мс, снова включить их на 0,3 мс и выключить.
По идее все элементарно...
1) Задать 9 однобайтовых чисел расположенных в EEPROM, начиная с адреса 0x0B05. Найти отрицательные элементы массива и записать их в ОЗУ начиная с адреса 0x0D99. Для адресации использовать индексные регистры.
2) Произвести вычисление следующего выражения R=4*x2*x3+x1^4-3*x3 операнды целые однобайтные числа находящиеся в ОЗУ, начиная с адреса 0x0220. Результат заносится в память, начиная с адреса 0x0228.
3) К порту B подключено 8 светодиодов. Необходимо включить 0 и 1 биты на 0,2 мс, выключить их на 0,1 мс, снова включить их на 0,3 мс и выключить.
По идее все элементарно...
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я тоже так думаю.tohafox писал(а):По идее все элементарно...
Все будет только лучше, в крайнем случае - хуже.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
tohafox
Напишите, что получилось, мы Вас поправим, если что.
Напишите, что получилось, мы Вас поправим, если что.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Вообще, задание некорректно сформулировано:
Во-первых, не указано какой именно AVR используется - от этого зависит возможно ли использовать команду mul для умножения или нужно писать свою функцию для этого.
Во-вторых, не указана частота, на которой будет работать МК, а без этого в программе невозможно задать временные интервалы (можно задать интервалы в тактах, а уж сколько это будет миллисекунд - зависит от частоты)
Во-первых, не указано какой именно AVR используется - от этого зависит возможно ли использовать команду mul для умножения или нужно писать свою функцию для этого.
Во-вторых, не указана частота, на которой будет работать МК, а без этого в программе невозможно задать временные интервалы (можно задать интервалы в тактах, а уж сколько это будет миллисекунд - зависит от частоты)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Благодарю всех за помощь, особую благодарность выражаю pyzhman.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Доброго времени суток. Я пытаюсь разобраться с формированием временных интервалов. Я пытаюсь записать значение TCNT0 в R16 регистр, для последующего сравнения, но этого не происходит, счетчик работает до момента записи в temp и обнуляется. В регистре R16 ноль.
Собственно, не могу разобраться, где я накосячил. Контроллер attiny2313 AtmelStudio 6.1.2730
Собственно, не могу разобраться, где я накосячил. Контроллер attiny2313 AtmelStudio 6.1.2730
Код: Выделить всё
ldi temp, 0b0000001;
out TCCR0,temp; задаем предделитель
Start:
nop
nop
nop
nop
nop
nop
out TCNT0, temp; значение таймера записываем в R16
nop
rjmp Start;Re: Ассемблер (ASM) для AVR в вопросах и ответах
Для этого нужноvalera_sr писал(а):Я пытаюсь разобраться с формированием временных интервалов. Я пытаюсь записать значение TCNT0 в R16 регистр
Код: Выделить всё
IN R16,TCNT0- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Код: Выделить всё
ldi temp, 0b0000001;Раз уж вы запустили таймер, то может проще все сравнения делать в прерываниях от него? И зачем эти сравнения, если можно задать время прерывания?
Docendo discimus
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Замечу, что или
студией (3.21 и 4.19) понимаются одинаково.
Код: Выделить всё
LDI R16,0b1Код: Выделить всё
LDI R16,0b00000000000001- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
как и
Код: Выделить всё
LDI R16, 1[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


