Страница 105 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср сен 21, 2011 19:38:16
DX168B
Кстати, отличный сайт. Сам там бываю иногда.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт сен 22, 2011 09:19:56
ciph
Уважаемые, соединил atmega 8 c компом, прошил мк вот этим:
.include "c:\...\m8def.inc"
.cseg
.org 0
ldi R16,high(RAMEND)
out SPH,R16
ldi R16,low(RAMEND)
out SPL,R16
;Инициализация USART
ldi R16,$00 ;USART.Mode=9600,N,1(8Mhz)
out UCSRA,R16
ldi R16,$86
out UCSRC,R16
ldi R16,$33
out UBRRL,R16
ldi R16,$00
out UBRRH,R16
ldi R16,$F9
out UCSRB,R16
;Передача байта (символа) данных
ldi R16,$04 ;USART.Data=$04
out UDR,R16
;Ожидание конца передачи
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
;Передача байта (символа) данных
ldi R16,'P' ;USART.Data="P"
out UDR,R16
;Ожидание конца передачи
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
;Передача байта (символа) данных
ldi R16,'r' ;USART.Data="r"
out UDR,R16
;Ожидание конца передачи
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
ldi R16,'i' ;USART.Data="i"
out UDR,R16
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
ldi R16,'v' ;USART.Data="v"
out UDR,R16
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
ldi R16,'e' ;USART.Data="e"
out UDR,R16
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
ldi R16,'t' ;USART.Data="t"
out UDR,R16
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
ldi R16,'!' ;USART.Data="!"
out UDR,R16
in R16,UCSRA ;USART.WAIT(UDRE)
sbrs R16,UDRE
rjmp (PC-2)
;Конец программы (бесконечный цикл)
END_PROG: ;END PROG
rjmp END_PROG
в принципе все работает. Вопрос в том, как это можно сделать что бы текст посылался одной строкой. Понимаю что для этого нужно использовать что то на подобии массива.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт сен 22, 2011 09:49:44
ploop
Обычным циклом.
Текст можно сохранить в памяти программ как массив байт:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт сен 22, 2011 10:03:47
ciph
аа можно чуток чуток подробнее, я вот нашел в обучалке:
ldi Temp,0 ;инициализация регистра
;внутренней адресации массива
ReadArray:
ldi ZH,High(MyArray*2) ;загрузка адреса 0-го
ldi ZL,Low(MyArray*2) ;элемента в рег. пару Z
ldi Temp1,0
add ZL,Temp ;прибавление
adc ZH,Temp1 ;внутр. адреса
lpm ;загрузка из ПЗУ
mov Temp1,R0 ;копирование
out PortB,Temp1 ;вывод в порт
inc Temp ;увелич. внутр. адреса
rjmp ReadArray ;в начало цикла
MyArray:
.db 12,16,3,4,10,17,255,37,158,14,13,98
.db 14,85,30,9,145,52,64,49,119,72,209,46
корни отсюда брать? И еще как я понимаю прерывания надо использовать?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт сен 22, 2011 10:32:57
ploop
Можно и без прерываний:
Код: Выделить всё
ldi ZL,Low(my_text*2)
ldi ZH,High(my_text*2)
ldi R16,7 ; длина строки
loop:
sbis UCSRA,UDRE
rjmp loop ; ожидание
lpm R17,Z+ ; читаем и увеличиваем адрес в Z
out UDRE,R17 ; отправляем байт
dec R16 ; проверим сколько отправили
brne loop ; если не всё - зацикливаем
;-------------
my_text:
.db "Privet!"
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт сен 22, 2011 10:49:27
ciph
Спасибо! Буду пробовать
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт сен 23, 2011 00:55:11
DX168B
Кусок одной из моих программ. Немного по ламерски, просто было не до изяществ.
п\программа передачи по UART вынесена отдельно, так как применяется практически везде.
(вывод логов всех действий девайса по UART)
Код: Выделить всё
..............
rcall PRC_STOP
................
...
;----------------------------------------------
PRC_STOP:
ldi ZL, Low(ARRAY10*2)
ldi ZH, High(ARRAY10*2)
ldi R17, 14
PRC_STOP_LOOP:
lpm r16, Z+
rcall USART_TX
dec r17
brne PRC_STOP_LOOP
ret
;----------------------------------------------
USART_TX:
;---
sbis UCSRA, UDRE
rjmp USART_TX
;---
out UDR, r16
ret
;----------------------------------------------
ARRAY10:
.db "PROC STOPPED.", 10
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср сен 28, 2011 10:54:40
ciph
Возникла еще одна задача:
Принимаем по uart с пк допустим строку, состоящую из n количества символов. Нужно в этой строке найти определенные символы. При положительном результате делаем какое либо действие дальше... Как нужно?-запихнуть эту строку в озу и потом начать сравнивать или есть другой способ?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср сен 28, 2011 11:16:18
Gudd-Head
ciph писал(а):есть другой способ?
Если только сразу сравнивать принятный символ.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср сен 28, 2011 11:30:47
Jack_A
ciph писал(а):Как нужно?-запихнуть эту строку в озу и потом начать сравнивать
Именно так. А разве на этом пути есть какие-то непреодолимые трудности? Строка по любому принимается в ОЗУ.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср сен 28, 2011 12:45:25
ciph
Jack_A писал(а): есть какие-то непреодолимые трудности?
Есть, но надеюсь не непреодолимые. Все находится в стадии освоения и изучения мк.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 14:58:55
nibiluk
Нужна такая задача, есть переменная в озу, есть одна кнопка, нажал на кнопку даные с одного регистра записались в озу, нажел еще раз с другого регистра в ту же переменную, и так желательно 4 раза, как это записать кодом ? кто подскажет.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 15:17:31
pyzhman
Код: Выделить всё
L0: SBIC PINB,0
RJMP L0
STS var, R16
L1: SBIS PINB,0
RJMP L1
L2: SBIC PINB,0
RJMP L2
STS var, R17
L3: SBIS PINB,0
RJMP L3
L4: SBIC PINB,0
RJMP L4
STS var, R18
L5: SBIS PINB,0
RJMP L5
L6: SBIC PINB,0
RJMP L6
STS var, R19
L7: SBIS PINB,0
RJMP L7
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 16:08:53
Gudd-Head
А антидребезг?

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 16:16:19
nibiluk
Не совсем понятно как прога узнает нажал я один раз или 10 раз.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 17:13:26
GP1
nibiluk писал(а):Не совсем понятно как прога узнает нажал я один раз или 10 раз.
как поставлен вопрос, так и задача решена.
Gudd-Head писал(а):
А антидребезг?

вопроса про антидребезг не было.
если надо сначала получит число нажатий, а потом уже анализировать.
nibiluk писал(а): нажел еще раз с другого регистра в ту же переменную...
то и задачу надо обрисовывать конкретней
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 18:13:51
nibiluk
Ладно скажу по другому, есть цикл индикации на семисегментник,хочу одной кнопкой менять содержимое которое отображается. Не пинайте сильно програмирование только начал осваивать.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 18:55:32
GP1
опять же, тут куча вариантов реализации, как вариант:
в памяти организуем N-переменных
по каждому нажатию кнопки меняем счетчик, ес-но проверяем на макс/мин значения
перед вызовом цикла индикации (я бы сделал в прерывании) проверяем кнопку (значение которое накопил) если оно поменялось
грузим из памяти новое значение
если нет оставляем старое.
ну и т.д.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 19:03:14
pyzhman
GP1 писал(а):как поставлен вопрос, так и задача решена.
GP1 -
Gudd-Head -
nibiluk - если хотите получить ясный и внятный ответ, описывайте сразу все и досконально. Отвечающий может и рад бы вам помочь, но после тридесятого
холостого написания кода руки опускаются. "Ладно скажу по другому" - вас никто не уговаривает, нужно вам.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс окт 02, 2011 20:29:39
nibiluk