Например TDA7294

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

Текущее время: Вс авг 10, 2025 05:46:21

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 102, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 12:42:22 
Встал на лапы

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Пн июл 21, 2008 12:34:48
Сообщений: 87
Рейтинг сообщения: 0
Всем привет!
Товарищи, нужна помощь!

В контроллер (ATmega16) поступает 16 разрядное число в коде Грея, надо перевести в бинарный код. Как перевести 8 разрядное (1 байт) я знаю.

Как-то так:
ldi temp, 0b00000000
ldi temp1,0b00011111 ;grey

qw:
eor temp, temp1
lsr temp1
cpi temp1, 0
brne qw

А как перевести 16 разрядное?

Данные принимаются в 2 байта. Если переводить каждый байт отдельно, то ничего не получается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 13:04:40 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
http://ru.wikipedia.org/wiki/%D0%9A%D0% ... 0.B5.D1.8F

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 13:08:30 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А по поводу реализации - двигать с переносом два байта:
Код:
lsr temp1
rol temp2


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 14:55:11 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ploop, дружище, что ж ты человеку подумать не даешь?

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 15:29:25 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вот такой я нехороший человек...
Хорошо удержался - не стал полный код цикла писать :)

И кстати, у меня там ошибка - пусть автор подумает как раз :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 15:51:11 
Встал на лапы

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Пн июл 21, 2008 12:34:48
Сообщений: 87
Рейтинг сообщения: 0
ploop, GP1, проверьте, правильно?


ldi temp, 0b00000000
ldi temp1, 0b00000000
ldi temp2,0b00011010 ;grey старший
ldi temp3,0b11001001 ; младший

qw:
eor temp, temp2
eor temp1, temp3

lsr temp2
ror temp3

cpi temp3, 0

brne qw


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 15:55:53 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
надо проверять оба байта, иначе при temp3=0 и не нулевом temp2 получишь неправильный код на выходе

да и еще:
ну давайте переменным осмысленные имена, ну сколько об этом писать можно
Код:
.def GreyWordh=r16
.def GreyWordl=r17

по-моему выглядит лучше чем просто "temp", не ленитесь писать по-человечески.

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 16:16:53 
Встал на лапы

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Пн июл 21, 2008 12:34:48
Сообщений: 87
Рейтинг сообщения: 0
Спасибо, задача решена!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 17:44:05 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Кстати, почему всем так нравится этот temp? Гораздо проще использовать настоящие имена - R16, R17 ... и т.д.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 18:11:26 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
загляни в обучалку :wink:

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 19:55:31 
Родился

Зарегистрирован: Ср сен 07, 2011 20:21:10
Сообщений: 18
Рейтинг сообщения: 0
Здравствуйте!
Нужно приравнять выставить один бит порта на 1, если число N больше 1 или на 0 если число N = 1. Это можно сделать быстрее, чем на сравнениях с нулём? Может битовой логикой?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 20:15:26 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
kreygen писал(а):
Здравствуйте!
Нужно приравнять выставить один бит порта на 1, если число N больше 1 или на 0 если число N = 1. Это можно сделать быстрее, чем на сравнениях с нулём? Может битовой логикой?

а число со знаком или без?]

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 21:30:47 
Родился

Зарегистрирован: Ср сен 07, 2011 20:21:10
Сообщений: 18
Рейтинг сообщения: 0
Цитата:
а число со знаком или без?


Без.
Вот так реализовано сейчас:
//#define SDA0 cbi(SPIPORT,SDA);
//#define SDA1 sbi(SPIPORT,SDA);
//#define cbi(reg, bit) (reg&=~(1<<bit))
//#define sbi(reg, bit) (reg|= (1<<bit))

if ((b&128)==0) SDA0 else SDA1
Хотелось бы быстрее, я пытался так:
//SPIPORT &= ~(1 << 2);
//SPIPORT += (1 << 2)*((b>>7));
Но работает медленнее. Думал, на чистом асме можно как-то быстрее... это код на С.

Я ошибся в предыдущем посте, выставить бит впорте на ноль, если в числе все нули.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 21:35:29 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если нужна скорость - говори номер бита порта. Подумаем.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 21:39:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
kreygen писал(а):

Я ошибся в предыдущем посте, выставить бит впорте на ноль, если в числе все нули.

это вообще как два пальца... ну сам знаешь
Код:
tst    n
brne m1      ;если не 0, обходим установку в 0
cbi   port,bit

m1:
..
..
..


_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт сен 08, 2011 23:15:53 
Встал на лапы

Зарегистрирован: Пн дек 06, 2010 11:11:36
Сообщений: 138
Рейтинг сообщения: 0
Ребят, а есть ли у кого-нибудь табличка с командами, с которыми не работают регистры R0-R15? В даташите как то очень расплывчато, у Ревича тоже нету :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт сен 09, 2011 07:24:55 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
скачай Евстифеева у него команды отдельной главой описаны, там все просто.

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт сен 09, 2011 11:18:49 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6048
Откуда: Minsk
Рейтинг сообщения: 0
Xerion писал(а):
Ребят, а есть ли у кого-нибудь табличка с командами, с которыми не работают регистры R0-R15? В даташите как то очень расплывчато, у Ревича тоже нету :(

Совсем не расплывчато : только с R16...R31 работают команды с непосредственным опреандом : ORI,ANDI,SUBI, в котором операнд находится уже в самом коде команды.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт сен 09, 2011 11:37:49 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да любые с константами: SBR, CBR например...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт сен 09, 2011 12:31:22 
Встал на лапы

Зарегистрирован: Пн июл 12, 2010 16:03:11
Сообщений: 136
Рейтинг сообщения: 0
Вектора прерываний так сделать?
Код:
; Define here Reset and interrupt vectors
rjmp RESET ; Reset
rjmp INT0 ; INT0
rjmp INT1 ; INT1
rjmp INT2 ; INT2
rjmp PCINT0 ; PCINT0
rjmp PCINT1 ; PCINT1
rjmp PCINT2 ; PCINT2
rjmp PCINT3 ; PCINT3
rjmp WDT ; Watchdog Timeout
rjmp TIMER2_COMPA ; Timer2 CompareA
rjmp TIMER2_COMPB ; Timer2 CompareB
rjmp TIMER2_OVF ; Timer2 Overflow
rjmp TIMER1_CAPT ; Timer1 Capture
rjmp TIMER1_COMPA ; Timer1 CompareA
rjmp TIMER1_COMPB ; Timer1 CompareB
rjmp TIMER1_OVF ; Timer1 Overflow
rjmp TIMER0_COMPA ; Timer0 CompareA
rjmp TIMER0_COMPB ; Timer0 CompareB
rjmp TIMER0_OVF ; Timer0 Overflow
rjmp SPI_STC ; SPI Transfer Complete
rjmp USART0_RX ; USART0 RX Complete
rjmp USART0_UDRE ; USART0,UDR Empty
rjmp USART0_TX ; USART0 TX Complete
rjmp ANALOG_COMP ; Analog Comparator
rjmp ADC ; ADC Conversion Complete
rjmp EE_READY ; EEPROM Ready
rjmp TWI ; 2-wire Serial
rjmp SPM_READY ; SPM Ready
rjmp USART1_RX ; USART1 RX Complete
rjmp USART1_UDRE ; USART1,UDR Empty
rjmp USART1_TX ; USART1 TX Complete
;******************************

;******************************
;RESET:
INT0:
INT1:
INT2:
PCINT0:
PCINT1:
PCINT2:
PCINT3:
WDT:
TIM2_COMPA:
TIM2_COMPB:
TIM2_OVF:
TIM1_COMPA:
TIM1_COMPB:
TIM1_OVF:
;TIM0_COMPA:
;TIM0_COMPB:
TIM0_OVF:
SPI_STC:
USART0_RXC:
USART0_UDRE:
USART0_TXC:
ANA_COMP:
;ADC:
EE_RDY:
TWI:
SPM_RDY:
USART1_RXC:
USART1_UDRE:
USART1_TXC:
reti


Код:
          ldi r18,0b00100111   ;разрешить прерывание компаратора (TIMSK1)
          sts 0x6F,r18
А здесь что не так?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 102, , , ...  

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 188


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

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


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