Страница 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".
:dont_know:

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

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

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

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

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-разрядный таймер в режиме генерации прерывания "по совпадению" (возможна корректировка ошибки хода) с тактированием от кварцованного генератора
:beer:
да и еще один момент - совмещенный контроллер дисплея/клавиатуры (чтоб индикатор равномерно светился и кнопушки опрашивались без сбоев)
у 51 аппаратный приоритетный контроллер прерываний, а у avr программное разрешение вложенных перываний мудрить надобно или брать единый для всех процессов базовый квантователь, а секунду формировать из некоторого количества строк развертки дисплея :cry:

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

Добавлено: Ср апр 11, 2012 14:00:18
GP1
почти у всех мег таймер Т1 может работать в асинхронном режиме с внешним кварцем на 32768Гц, и получать прерывание в 1 сек.

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

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

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%
Что я делаю не так? :)