Страница 210 из 400

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Ср ноя 20, 2013 00:33:32
Black_Wolf
Ванюшка писал(а): У меня почему-то "0" на выходе только в одном случае: PA3 - "1", PA4 - "1", PA5 - "0". Во всех остальных случаях PC0 - "1"
Если в коде есть "тупейшие" ошибки, не судите меня строго, это моя первая программа.
Изображение

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Ср ноя 20, 2013 14:37:29
ibiza11
вот так проще наверное в Вашем случае?

Код: Выделить всё

.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 в вопросах и ответах

Добавлено: Ср ноя 20, 2013 17:01:35
Ванюшка
Всем огромнейшее СПАСИБО. Я не правильно высчитывал таблицу истинности. :oops:
ibiza11 спасибо за код, в котором, я хотя многих инструкций еще не знаю и приемов не понимаю, т.к. я только-только начинающий, думаю разобраться.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 11:30:48
FreshMan
есть некая незамысловатая ф-ция :))

Код: Выделить всё

;*************************************************************************
; 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_T2

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 12:18:44
Engineer_Keen
В AVR-ассемблере встроенном в студию (4) я таких директив не видел...
7.54 .stabd, .stabn, .stabs
Эти три директивы, начинающиеся с .stab, формируют символы (смотрите главу 5 "Символы") для использования их в символических отладчиках. Эти символы не входят в hash-таблицу as: на них не может быть как-либо ссылок в исходном файле
источник

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 12:41:41
FreshMan
почему в выше нриведенной ф-ции написано так

Код: Выделить всё

1:
2:
3:
а не

Код: Выделить всё

1f:
2f:
3f:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 12:54:20
Engineer_Keen
Фиг его знает, нужно читать хелп к этому ассемблеру. Может быть из-за того, что это какая-то функция (похожа на макрос в обычном AVR-ассемблере) и суффикс f стоит как указатель на то, что это не абсолютная метка, а метка в конкретно этой функции.
Короче нужно выяснить что это за ассемблер, а там видно будет...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 15:18:22
BOB51
похоже на самодельно определенные макросы...
только вот явно не avrasm... :shock:
предположительно
rjmp 2f обращается к выполнению какого-то фрагмента 2f(1f,3f,4f,5f), которого в вышеприведенном тексте нету... а чего в тех фрагментах нарисовано, только их автору ведомо.
текущие метки 1: и иже сними отношение к 1f и остальным имеют через пока неведомый кусочек.
или определение "локальной метки" (у каждого компилятора по-своему) :roll:
А чего на самом деле только справка по тому компилятору поможет.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 15:26:23
Gudd-Head
Короче, Свежий ошибся веткой :)))

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт ноя 29, 2013 15:27:17
ploop
похоже на самодельно определенные макросы...
Я бы сказал больше похоже на листинг какого-то компилятора...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пн дек 02, 2013 20:36:42
tohafox
Помогите решить простые задачки на ассемблере (типо лабораторная работа)
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 мс и выключить.

По идее все элементарно...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пн дек 02, 2013 22:42:09
coredumped
tohafox писал(а):По идее все элементарно...
Я тоже так думаю.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пн дек 02, 2013 22:57:14
SmarTrunk
tohafox
Напишите, что получилось, мы Вас поправим, если что.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вт дек 03, 2013 22:00:31
ANALOG
Вообще, задание некорректно сформулировано:
Во-первых, не указано какой именно AVR используется - от этого зависит возможно ли использовать команду mul для умножения или нужно писать свою функцию для этого.
Во-вторых, не указана частота, на которой будет работать МК, а без этого в программе невозможно задать временные интервалы (можно задать интервалы в тактах, а уж сколько это будет миллисекунд - зависит от частоты)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вт дек 03, 2013 22:09:01
tohafox
Благодарю всех за помощь, особую благодарность выражаю pyzhman.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт дек 13, 2013 01:42:04
valera_sr
Доброго времени суток. Я пытаюсь разобраться с формированием временных интервалов. Я пытаюсь записать значение TCNT0 в R16 регистр, для последующего сравнения, но этого не происходит, счетчик работает до момента записи в temp и обнуляется. В регистре R16 ноль.
Собственно, не могу разобраться, где я накосячил. Контроллер 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 в вопросах и ответах

Добавлено: Пт дек 13, 2013 02:32:17
akl
valera_sr писал(а):Я пытаюсь разобраться с формированием временных интервалов. Я пытаюсь записать значение TCNT0 в R16 регистр
Для этого нужно

Код: Выделить всё

IN R16,TCNT0
Сейчас Вы заносите 1 в TCNT0 в конце каждого цикла.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт дек 13, 2013 07:13:28
pyzhman

Код: Выделить всё

ldi temp, 0b0000001;
Вообще говоря, в байте восемь бит. Мелкий огрех, но тем не менее.
Раз уж вы запустили таймер, то может проще все сравнения делать в прерываниях от него? И зачем эти сравнения, если можно задать время прерывания?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт дек 13, 2013 08:07:44
akl
Замечу, что

Код: Выделить всё

LDI R16,0b1
или

Код: Выделить всё

LDI R16,0b00000000000001
студией (3.21 и 4.19) понимаются одинаково.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт дек 13, 2013 14:25:15
Gudd-Head
как и

Код: Выделить всё

LDI R16, 1