Страница 63 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 11:37:22
DX168B
ibiza11 писал(а):
в каком из этих случаев ДЕЙСТВИТЕЛЬНО УСТАНОВИТСЯ 7ой БИТ?
В обоих случаях. Компилятор сам всё преобразует.
ibiza11 писал(а):
PS я из-за этоих команд словил нефиговый баг, при этом девайс чуть не сгорел.
Если их коды совершенно идентичны кодам andi и ori, то почему Вы не ловили баги с ними(andi и ori)? Ведь форма записи в бинарник та же. А следовательно, МК не различит, что в листинге написали, будь то cbr или или andi. Скорее всего Ваш компилятор криво откомпилировал. CBR может принять и несколько аргументов, например CBR r16, (1<<3)|(1<<5)|(1<<7) А вместо аргументов туда засунется восьмибитное число с единицами в указанных битах. Даже если вставить один аргумент.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 11:52:55
ploop
DX168B, причина ошибок большинства в другом. Ну смотрите:
sbi PORTB,7 установит 7 бит в PORTB. Аналог:
in temp, PORTB
ori temp, 0b10000000
out PORTB,temp
Естественно, первая запись короче и понятней. Но, поступая аналогично с РОН, только используя sbr, получаем вот что:
sbr temp,7
Аналог:
ori temp,0b00000111 (число 7 в двоичном представлении)
Тем самым мы зафигачим в единицы три младших бита, вместо седьмого.
Ток что sbr tmp,(1<<7) прокатит (т.к. создаст корректную маску), а вот sbr tmp,7 - сведёт с ума не разобравшегося.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:02:34
DX168B
Ну не знаю. Пользоваться надо последними обновлениями на среду разработки.
У меня катит даже такое:
И получаю 0xA2
А с CBI и SBI не катит.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:16:57
ploop
А с CBI и SBI не катит.
Само собой, у мних аргумент должен быть не больше 7
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:25:40
DX168B
Ладно, всё это мелочи. Я всё равно ими не пользовался, но раз они тупят, то и не буду их применять. Собственно тупизм там не с МК, а с компилятором. У кого-то оно проблем не вызовет, а кто-то будет мучаться. У меня (проверил только что) компилятор всё разбирает правильно.
Я в принципе больше со сложением\вычитанием работаю.
Код: Выделить всё
ldi r16, 0b11111111
sub r16, 0b00001001 ;Вычтем из r16 это число
; В r16 останется 0b11110110
add r16, 0b00001001 ;Теперь добавим это же число
; В r16 получится 0b11111111
Никогда не подводило.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:28:29
ibiza11
DX168B писал(а):Ну не знаю. Пользоваться надо последними обновлениями на среду разработки.
У меня катит даже такое:
И получаю 0x
A2
А с CBI и SBI не катит.

вы в какой среде разработки работаете?
DX168B писал(а):Никогда не подводило.
А вы заранее знаете какой бит у вас установлен, а какой нет?
Если вы вашим способом попытаетесь выставить бит, который и так уже выставлен (например в каком нибудь цикле), то получите прекраснейший баг, который никогда
не поймаете, исходя из "Никогда не подводило". Аналогично со сбросом уже сброшенных бит.
Слышал много про быдлокодеров, но блин такое! Зачем придумывать велосипед, если есть специальная команда сброса/установки бита в регистре РОН.
Set
Bit in
Register=
SBR
Clear
Bit in
Register=
CBR
исправлено :[
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:32:32
DX168B
В этой:
AVR Studio писал(а):
AVR Studio 4.18.700
GUI Version 4, 18, 0, 685
AVR Simulator 1, 0, 2, 1
ATtiny2313 220
Operating System
Major 5
Minor 1
PlatformID 2
Build 2600
Service Pack 3
*самореклама*:
VDMAvrGUI
AvrPluginAvrAsmObject 1, 0, 0, 48
AvrPluginavrgccplugin 1, 0, 0, 11
Stk500Dll 1, 0, 1, 15
Ещё WinAVR установлена.
Проблем нет никаких.

Может у меня она криво встала.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:40:32
ibiza11
AVR Studio - Help - Assembler help - CBR
AVR Studio - Help - Assembler help - SBR
посмотрите и почитайте что там написано. не удивлюсь, что там написано то же самое что и у меня. У меня студия 4.16 SP3
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:44:04
DX168B
ibiza11 писал(а):
А вы заранее знаете какой бит у вас установлен, а какой нет?
Да, только в случае если знаю. И в основном с одним битом только.
ibiza11 писал(а):
Слышал много про быдлокодеров, но блин такое! Зачем придумывать велосипед, если есть специальная команда сброса/установки бита в регистре РОН.
Set Bit in Register=SBI
Clear Bit in Register=CBI
Вы меня паццтол загоняете.
SBI -
Set
Bit in
I\O register
CBI -
Clear
Bit in
I\O register
Разницу чувствуете между РОН и регистрами ввода\вывода?

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:46:48
Gudd-Head
ibiza11 писал(а):Слышал много про быдлокодеров, но блин такое! Зачем придумывать велосипед, если есть специальная команда сброса/установки бита в регистре РОН.
Set Bit in Register=SBR
Clear Bit in Register=CBR
Позволю себе картинку из Естифеева. Обратите внимание на примеры.

CBR аналогично.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:55:44
DX168B
Ну а почему, в начале написали, что SBI\CBI применимо к РОН и в хелп меня посылают. Я его перелопатил уже вдоль и поперёк. Сначала осуждают команды SBR и CBR а потом говорят, что ими надо пользоваться. Вот как Студия посылает, если применить SBI\CBI к РОН:
Аналогично и с записью (1<<2)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 12:57:24
ibiza11
И еще добавлю про команды
SBR и
CBR.
Нефиговый баг я получил от того, что писал как предлагаете вы и утверждаете, что все прекрасно работает.
А именно я писал так:
подразумевая при этом сброс бита №5 в регистре
temp. На самом деле команда
CBR, практически(!) аналогична команде
ANDI, поэтому сбрасывался не 5ый бит, а сбрасывались биты под номерами 2 и 0, поскольку 5 = 00000101.
Что конкретно написано в Assembler help из пакета AVRStudio. Каким образом у вас получается нае*ать компилятор, мне в голову не приходит,
поэтому пришла мысль, что вы пытаетесь нае*ать кого-нибудь другого. Я могу ошибаться, но мнение сложилось именно такое, с учетом предоставленных вами
аргументов.
почему я написал практически(!), потому что компилятор, перед тем как заменить команду
CBR на команду
ANDI, инвертирует второй аргумент команды (нашу константу) и только после этого выполняет побитовое
И. Таким образом
аналогична записям
Код: Выделить всё
andi temp,~(1<<6)
andi temp,~(0x40)
andi temp,0xDF
я поправил свой пост, спешил и написал про
SBI и
CBI, но суть вы поняли. Я даже специально выделил заглавные буквы в выражении жирным, а в итоге вместо
R поставил
I. Признаю
ОПЕЧАТАЛСЯ.
Gudd-Head, так о том и речь. А у
DX168B команды
SBR и
CBR в AVRStudio почему-то работают не так как должны)))))
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:02:45
ploop
Ну а почему, в начале написали, что SBI\CBI применимо к РОН и в хелп меня посылают. Я его перелопатил уже вдоль и поперёк. Сначала осуждают команды SBR и CBR а потом говорят, что ими надо пользоваться. Вот как Студия посылает, если применить SBI\CBI к РОН:
Кто сказал? Мы с
Gudd-Head этого не говорили.
Я изначально поднял эту тему, надеясь на внятный ответ. Но, не получив такового, пошел разбираться сам, убив вечер, но прояснив всю ситуацию. А дальше уже спорить начал

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:05:21
DX168B

Вот скрин.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:13:15
ibiza11

беру все оскорбления обратно.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:13:39
DX168B
ploop писал(а):
Кто сказал? Мы с
Gudd-Head этого не говорили.
Вы нет, на скрине видно. Посты править и я умею, и потом утверждать, что не говорил.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:15:24
DX168B
ibiza11 писал(а):
беру все оскорбления обратно.
Ну вот и я не понимаю, что за косякс в моей студии.

Может где-то в заголовочнике он что-то не так принял? Там ведь тоже есть описания битов.
Ща гляну.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:17:34
ibiza11
DX168B писал(а):ploop писал(а):
Кто сказал? Мы с
Gudd-Head этого не говорили.
Вы нет, на скрине видно. Посты править и я умею, и потом утверждать, что не говорил.

Здесь то я причем??? Я утверждал, что не говорил? Или пост правил? То что я опечатался, я в следующем посте написал.
Ploor ответил за себя и
Gudd-Heada
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:22:19
DX168B
Выглядит пост
ploopа так, как буд-то не только за
Good_Headа говорит, но и за Вас.
Да всё нормально.

Кстати, вспомнил. У меня недавно был сбойный сектор на HDD в районе Студии. Возможно это из-за него. Сектор восстановил, но Студию придётся как я понял переустанавливать.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт янв 27, 2011 13:26:33
ibiza11
и все же бред, что компилятор воспринимает команды
sbr и
cbr так, как вы написали. Скрину не очень доверяю, значения регистров можно править самому в любой момент. Я вам не верю. И не понимаю зачем вы доказываете то, что опровержено в
Helpe. (вы же его вдоль и поперек изучили

)