Страница 125 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 08:55:18
Engineer_Keen
Если важен размер кода, то да, сдвиги можно зациклить. А если быстродействие, то без разницы...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 08:58:18
Gudd-Head
Engineer_Keen писал(а):А если быстродействие, то без разницы...
Если не видно разницы, то зачем платить больше?

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 09:00:37
ploop
А то смотрю народ совсем T-флагом не пользуется, забыли его
Открыл последний проект:
Found 18 matches for "bld".
Found 17 matches for "bst".
Found 5 matches for " set ".
Found 11 matches for "clt".

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 09:43:55
Engineer_Keen
Но манипуляций с С наверняка больше

Ну ладно, не в этом суть

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 09:53:10
Gudd-Head
Engineer_Keen писал(а):Но манипуляций с С наверняка больше
Манипуляций с чем???

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 09:54:01
ploop
Found 16 matches for "brtc".
Found 1 match for "brts".
Found 21 matches for "brcc".
Found 6 matches for "brcs".
Флаг C - естественный, т.е. устанавливается практически после любой операции, чего не скажешь о Т. Однако про Т тоже забывать не стоит, для битовых операций он очень удобен.
Нужна помощь по ассемблеру
Добавлено: Ср апр 04, 2012 21:00:55
shaitan-tm
Помогите написать программку для атмеги 8535 на ассеьлере
Настроить порт А на вывод низкого уровня, после этого осуществить вывод высокого уровня на ножку А0 через 0,512 мс.
Перенёс сюда
ploop
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 21:21:13
ploop
А конкретно - что не получается?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 04, 2012 23:53:06
Jack_A
ploop писал(а):
Флаг C - естественный, т.е. устанавливается практически после любой операции
Ну прям любой - ни в одной логической и далеко не во всех арифметических. А бит Т никогда не работает "автоматически", он всегда - инструмент в руках программиста.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт апр 05, 2012 06:47:10
pyzhman
Код: Выделить всё
.include "m8535def.inc"
.org 0
CLI ;запрет прерываний
WDR ;останов WATCHDOG'a.
LDI R16,0b00011000
OUT WDTCR,R16
LDI R16,0b00010000
OUT WDTCR,R16
CLR R16
OUT PORTA,R16 ;все лапки порта А = 0
SER R16
OUT DDRA,R16 ;портА на выход
LDI R16,0x80 ;задержка
m1: DEC R16 ;зависит от
BRNE m1 ;частоты тактирования
LDI R16,0x01
OUT PORTA,R16 ;установка А0 = 1
loop: RJMP loop
Примерно так. Непонятна точка отсчета заданного времени.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт апр 05, 2012 10:28:33
Леонид Иванович
Gudd-Head писал(а):Если не видно разницы, то зачем платить больше?

Поэтому пишите на Си

Тоже когда-то был ярым сторонником ассемблера, но лень взяла верх. Программы стали хуже, но на Си они появляются без особых усилий. Только сопроцессоры иногда пишу на ассемблере, такие, как ядро DDS в генераторе SG-642.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 10, 2012 23:54:10
ZERO..
Вопрос по AVR именно на Assemblere:
Есть программа "часы" она написана для AT89C2051, хочу написать сам для AT90S2313, в той книге написано:
*********Определение констант
bank0 equ 00000000B
bank1 equ 00001000B
*********Резервирование ячеек
BSEG
ORG 0
bufT: DBIT 1 ;буфер десятичной точки
Вопросы конкретики (2 штуки)
1)Вопрос: А что это за bank0, bank1-что то вроде регистров общего назначения?(temp, РОН, r16-r31)
2)Вопрос: Про "резервирование ячеек" вообще в голову ни что не приходит?
Вопрос абстракции
1) Алгоритм "часов" я понял так: все работает от вектора прерывания по переполнению 1-го единственного таймера, и динамическая индикация, и секундная точка и еденицы минут!!! (десятки минут и часы уже условием сравнения) ВОПРОС: а как это на одном таймере, он же должен сбрасываться после первого переполнения???
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 06:53:26
Alexeyslav
bank0, bank1 - это просто константы.
"резервирование ячеек" - это наверно те же константы, только являются адресами ячеек памяти или регистров. В AT90S2313 адресация непрерывная, поэтому и ячейки памяти и регистры находятся в одном адресном пространстве, но доступ к регистрам(первые 32 ячейки памяти) наиболее быстрый.
В часах таймер используется только как источник точных интервалов времени. он просто отсчитывает интервалы, а с них уже формируются секунды, минуты и т.д.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 08:33:35
Engineer_Keen
1) В 51-м контроллере в качестве регистров R0-R7 можно использовать 4 набора ячеек ОЗУ - те самые банки. Именно их начальные адреса задаются константами bank0,bank1.
2) Это просто задание конкретных адресов для конкретных переменных. BSEG - это область ОЗУ, в которой можно обращаться побитно. В AVR так не получится, придется резервировать 1 байт и обращаться к его битам через маски.
3)Alexeyslav в принципе объяснил. Таймер настраивается на самый маленький необходимый интервал (например секунда), а в его прерывании уже считаются секунды. При счете 60 они сбрасываются, а минуты прибавляются и т.д.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 13:34:38
BOB51
в 51 регистровый банк - выделенная область из 8 регистров, которая в данный момент доступна для производства вычислений (исполнения команд) с акумулятором или пересылок, логики , загрузок (основной набор команд)
у avr регистровый банк в таком понимании - весь набор регисров РОН/"регистровый файл" (но не память!)
однако в полное соответствие возможно сопоставить только R16-R32 (R0-R15 не допускают непосредственной загрузки константой и операций с непосредственными данными).
дополнительные сложности создаст также отсутствие команд сложения с константой и десятичной коррекции результата
для генерации опорного интервала предпочтительно применить 16-разрядный таймер в режиме генерации прерывания "по совпадению" (возможна корректировка ошибки хода) с тактированием от кварцованного генератора

да и еще один момент - совмещенный контроллер дисплея/клавиатуры (чтоб индикатор равномерно светился и кнопушки опрашивались без сбоев)
у 51 аппаратный приоритетный контроллер прерываний, а у avr программное разрешение вложенных перываний мудрить надобно или брать единый для всех процессов базовый квантователь, а секунду формировать из некоторого количества строк развертки дисплея

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 14:00:18
GP1
почти у всех мег таймер Т1 может работать в асинхронном режиме с внешним кварцем на 32768Гц, и получать прерывание в 1 сек.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 15:00:40
BOB51
только интереснее не простое переполнение использовать, а прерывание по совпадению
а кто тактирует - 32768 или системный кварцевый - не суть важно (правда у системного на 20МГц точность естественно выше будет (при увеличении затрат потребляемой мощности по питанию) да и экономия в выводах...

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 17:10:33
shads
BOB51 писал(а):у системного на 20МГц точность естественно выше будет
Разве у 20мгц точность выше чем 32768 ?
Помоему это не так.....
Поясните пжлста, почему так считаете?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 17:20:14
GP1
возьми разброс, допустим +/- 5% (хотя кварцы намного стабильнее), подели до частоты 1Гц и посмотри в каком случае точность выше
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 11, 2012 17:26:36
ploop
и посмотри в каком случае точность выше
Поделил. Получилось ±5%
Что я делаю не так?
