Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
ATmega AVR Матричная клавиатура Подскажите пожалуйста.Матричная клавиатура,столбцы подтянуты к 0 и опрашиваются.Нужно ли в этой схеме применение защитных диодов и куда их повесить? <Изображение удалено> https://www.cyberforum.ru/ avr/ thread2085562.html USB keyboard controller — ищу ATmega AVR
Здрасте! Итак, 2 дня уже решаю одну из задач для собственного HTPC. Нужна как бы клава на переднюю панель, состоящая из 6 типовых кнопок управления плеером (плэй/стоп/пауза...). Дело в том, что вынимать плату из заводской клавы как-то неспортивно, обязательно хочется сделать что-то своё. Итак, т.з. Есть прогер AVRISPII, некоторый опыт работы с Мегами, но с чистым кодом не дружу, всегда творил...
ATmega AVR mega16 timer1 ctc top 1cr1 бага в AVRStudio? Добрый вечер, уважаемые) Сегодня узнал, что в mega16 в качестве верхней границы 1 счетчика можно использовать значение загнанное в icr1, обрадовался. Начал проверять в студии, а оно не пашет. Счетчику нравится щелкать только до ocr1a. Это что бага такая или я неправильно что-то делаю? Прожект прилагаю. У кого есть студия, потестите пожалуйста. пс. Попробовал в билдере - вроде пашет. ... https://www.cyberforum.ru/ avr/ thread2085560.html ATmega AVR 8 битный ацп атмега8 https://www.cyberforum.ru/ avr/ thread2085559.html
Всем куку. Такая проблема, при ADLAR 0 значение ацп в диапазоне 0-1024, при ADLAR 1 ,как указано в даташите, значения ацп никак не 0-255 ,а выше 2000 тысяч, это проверял светодидом в протеусе по условию ацп>2000. Какой регистр я не установил и какие должны быть установленны для 8бит измерения?
ATmega AVR Как прошить китайский USB ISP с помощью PinBoard 1.1 ?
Здравствуйте! Нужен совет. Есть у меня горе-программатор USB ISP, китайского производства. Естественно, авердудка его не понимает, только какой-то ProkISP 1.72 (Zhifengsoft). Но в этого китайского продукта есть минусы - он есть только под Wymdows и очень неудобный интерфейс. На демоплате PinBoard 1.1 есть штырьки FT BB PROG для программирования сторонних avr, если верить описанию DI Halt....
ATmega AVR Проблема установки драйвера AVR910 в Win8.1 https://www.cyberforum.ru/ avr/ thread2085557.html
ПредысторияПрошло года три как я отошел от "микроэлектронных дел" - работа/армия... но из-за тоски по былым временам все же нашел время и для этого рода занятий. Моя проблема: avr программатор мастеркитовский (BM9010) великолепно работавший года три назад на ПК (ХР SP3), не желает устанавливаться под винду 8.1 32 бит... Запуск этого устройства невозможен. (Код 10) Службе или функции передан...
ATmega AVR Проблема при симуляции с delay.h Здравствуйте. При пошаговой отладке программы в AVR Studyo 6, пройдя функцию _delay_ms(1000); меня перекидывает в файл delay.h на строчку __buyltin_avr_delay_cycles(__ticks_dc);. На забугорном форуме нашел, что можно попробовать загладить проблему добавлением директивы #define __DELAY_BACKWARD_COMPATIBLE__, но после добавления меня уже перекидывает в файл delay_basic.h на вот эту вот функцию:... https://www.cyberforum.ru/ avr/ thread2085556.html Мигающий текст на LCD HD44780 ATmega AVR
Всем привет! А как проще всего сделать часть текста выводимого на LCD типа HD44780 мигающим? Именно часть текста, а не курсор. Сейчас использую для LCD библиотеку отсюда http://chipenable.ru/index.php/programming-avr/item/74-biblioteka-dlya-lcd-s-komtrottirami-ks0066-i-hd44780.html. Я предполагаю два возможных решения (не факт, что они верные): 1. По таймеру выводить и затирать нужный кусок...
ATmega AVR AT90USB162 Здравствуйте! Вероятно кто-то сталкивался с такой проблемой, связаной с контроллером AT90USB162. Мною был приобретен данный чип в целях сделать аналог AVRISPmkII программатора. Схема по которой я делал 100% рабочая, все элементы были проверены (включая стабилизатор и кварц), как и соединения между ними, питание и сигналы на контроллер попадают, но компьютер его не распознает. Думал проблема в... https://www.cyberforum.ru/ avr/ thread2085554.html ATmega AVR Макросы, определения пинов МК, ввода-вывода https://www.cyberforum.ru/ avr/ thread2085553.html
Хочется удобного и покрасивше макросы, определения пинов МК, ввода-вывода. Накидайте примеров, плиз. На данный момент пока делаю, так сказать, стандартно. Но в таких случаях очень легко ошибиться при большом кол-ве ввода-вывода. //======================================================================== #define LED_DDR DDRD #define LED_PORT PORTD //#define OPEM_DROYM 0 //#define...
ATmega AVR UART и atmega16
Здравствуйте. Весь день бодаюсь с такой проблемой. Решил поуправлять мегой с компа. В качестве теста подцепил диоды к выводам PA0-PA3. Микроконтроллер в корпусе TQFP-44, кварц внешний 11059200 Герц. Светодиод зажигается командой blueon и выключаются blueoff. В протеусе все работает нормально, в железе же ничего не пашет. Фьюзы вроде верно проставил, в архивах плата в формате Диптрейс,...
ATmega AVR AVR и светодиодная лента TM1804 https://www.cyberforum.ru/ avr/ thread2085551.html
Может быть у кого-то есть опыт управления данной лентой с помощью AVR? Пробовал управлять WS2801 c помощью Attiny85 - там всё хорошо управляется по
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
25.04.2015, 13:26 0

Макрос: сложение регистровой пары и одного регистра - ATmega AVR - Ответ 11284441

25.04.2015, 13:26. Показов 25882. Ответов 43
Метки (Все метки)

Ответ

В общем как-то так, шаблон ядра конечного автомата на асме:
Код
//========================================================================
#define tab_h(x) HIGH(x), LOW(x)
#define tab_l(x) LOW(x), HIGH(x)
//========================================================================

//========================================================================
.macro   pushiwl
ldi      r16, LOW(@0)
push   r16
ldi      r16, HIGH(@0)
push   r16
.endmacro
//========================================================================

.cseg

//========================================================================
.macro Proc_FSM
ldz      @0*2
rjmp   _Proc_FSM
.endmacro

_Proc_FSM:
lpm      XH, Z+ ; Считывание старшего байта адреса состояния автомата.
lpm      XL, Z+ ; Считывание младшего байта адреса состояния автомата.
ld      r16, X ; Считывание состояния автомата.
lpm      r17, Z+ ; Считывание количества состояний автомата.
cp      r16, r17
brsh   Process_Errors_FSM
lpm      XH, Z+ ; Считывание адреса начала таблицы обработчиков состояний.
lpm      XL, Z
movw   ZH:ZL, XH:XL
add      ZL, r16 ; Смещение по индексу переменной состояния.
adc      ZH, RCLR
shiftlwz ; Выравнивание соттветственно пословной адресации.
lpm      r17, Z+ ; Считывание адреса обработчика состояния..
lpm      r16, Z
movw   ZH:ZL, r17:r16
ijmp ; Индексный переход.
Process_Errors_FSM:
cli ; немедленный запрет прерываний.
odyw   ZL, 2
lpm      r16, Z ; Считывание ID ошибки.
rjmp   Proc_Errors ; переход на обработчик ошибок.
//========================================================================

//========================================================================
.def   FSM_STATE             = r20
//========================================================================

//========================================================================
.equ   ERR_ID_FSM_1_MAX_STATES = 1
//========================================================================

.dseg

//========================================================================
_FSM_1_STATE: // Состояние автомата.
.byte   1
//========================================================================

//========================================================================
Proc_FSM_1_Save_State:
sts     _FSM_1_STATE, FSM_STATE
ret
//========================================================================

//========================================================================
Proc_FSM_1:
pushiwl      Proc_FSM_1_Save_State // Стек на сохранение переменных

lds         FSM_STATE, _FSM_1_STATE ; Считывание состояния.

Proc_FSM   Tab_FSM_1 // Индексный переход. Состояние автомата - индекс обработчиков состояний.
//========================================================================

//========================================================================
Proc_FSM_1_Init:
; bla-bla
Proc_FSM_1_Init_Save_State:
ldi FSM_STATE, _PROC_FSM_1_1
ret
//========================================================================

//========================================================================
Proc_FSM_1_1:
; bla-bla
Proc_FSM_1_1_Save_State:
ldi FSM_STATE, _PROC_FSM_1_OTHER
ret
//========================================================================

//========================================================================
//           STATE          MAX_FSM_STATES    TABLE_HANDLERS

Tab_FSM_1:
.db    tab_h(_FSM_1_STATE), MAX_FSM_1_STATES, tab_h(Tab_Jmp_FSM_1_Homdlers), ERR_ID_FSM_1_MAX_STATES

Tab_Jmp_FSM_1_Homdlers:
// Названия состояний задаем здесь во избежание ошибок.
.equ   MAX_FSM_1_STATES        = 2 // Количество состояний автомата.

.equ   _PROC_FSM_1_INIT        = 0
.db    tab_h(Proc_FSM_1_Init)

.equ   _PROC_FSM_1_1           = 1
.db    tab_h(Proc_FSM_1_1)
//========================================================================
Разъебеснение этой строки:
Код
   pushiwl      Proc_FSM_1_Save_State // Стек на сохранение переменных
В ядре индексный переход на обработчик состояния. ijmp. В конце обработчика установка состояния. Либо текущее остается, либо задается.
Код
Proc_FSM_1_Init_Save_State:
ldi FSM_STATE, _PROC_FSM_1_1
ret
По идее должен быть возврат, откуда вызвали модуль Proc_FSM_1. Но мы подсунули стеку адрес возврата Proc_FSM_1_Save_State. Поэтому сначала будет переход на этот адрес, и потом только возврат к месту вызова модуля.

Накидал на скору руку. Тщательно проверять нет ни времени ни желания. Разбирайтесь, запускайте мой пример в симуляторе студии. Удачи.

Всем желающим один из моих проектов на асме для разбирательства.

[22.77 Кб]

Вернуться к обсуждению:
Макрос: сложение регистровой пары и одного регистра ATmega AVR
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2015, 13:26
Готовые ответы и решения:

Сложение числа и регистровой пары
Как к получившемуся числу в DX:AX при умножении прибавить число? DX:AX + 1 = DX:AX?

Сложение регистровой пары и двух байтов
Помогите с задачкой) Разработать программу которая производит сложение регистровой пары и двух...

Пары верхнего и нижнего регистра
Посчитать, сколько пар (стоят рядом) верхнего и нижнего регистра находится в веденном с клавиатуры...

Сложение половинок регистра
Объясните плз как работает такое сложение и что находится в al и dh Какое значение получится в...

Написать макрос сравнения без учета регистра
Пож, подскажите, есть макрос для сравнения текста двух ячеек, учитывающий Регистр If...

43
25.04.2015, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2015, 13:26
Помогаю со студенческими работами здесь

Написать макрос, записывающий 1 стек регистра из списка
Задание: написать макрос записывающий 1 стек регистра из списка заранее спасибо

Макрос: сложение ячеек
Доброго времени суток. Подскажите как макросом через цикл сделать чтобы в каждой последующей ячейке...

Необходим макрос на сложение 2х чисел
В БД однотабличной , необходимо сложить два числа, в каждой строке и вывести результат , на против...

Переслать содержимое одного регистра в другой
Здравствуйте! Пожалуйста помогите решить задачу на языке assembler. а) Занести в регистры число:...

Смена регистра одного символа в строке.
Имееетса строка, нужно в ней сменить регистр нескольких символов. Смотрите в програме комментарий!...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru