Помогите пожалуйста написать код в AVR studio для ATmega8515
Есть 7 кнопок данных и одна кнопка ввода.
Вывести через порт D число, находящееся в EEPROM по адресу, определяемому нажатыми кнопками данных в тот момент, когда была нажата кнопка ввода.
Очень надеюсь,что кто-нибудь поможет.Заранее спасибо.
Постараюсь помочь, главное не забыть. ;)
По EEPROM можете глянуть статейку: https://radioded.ru/content/view/125/44/
Исходник из этой статьи для вашей задачи нужно чуть-чуть подправить.
Буду очень благодарен!
Спасибо за статейку!
Вспомнил молодость :) . Ностальгия по ассемблеру...
Симулировал в AVR Sudio - все работает. В теории все ОК, как на практике будет не знаю т.к. нет фильтрации дребезга контактов запускающей кнопки.
Схема подключения кнопок и диодов:
Проект в AVR Studio:
Вот исходник:
; https://radioded.ru/forum/viewtopic.php?f=4&t=446
; считывание адреса ячейки памяти EEPROM из порта B
; значение, которое хранится в ячейке памяти выводится в порт D
; кнопка запуска чтения - PE.0, нет фильтрация дребезга контактов
.include "m8515def.inc"
.def temp = R16
rjmp reset
.org 0x0d
rjmp button
reset:
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPL, temp
ldi temp, 0xFF
out DDRD, temp ; все ноги порта - выходы
ldi temp, 0xFF
out PORTB, temp ; подтяжка пинов к питанию
ldi temp, (1<<5)
out GICR, temp
sei
loop:
nop
rjmp loop ; бесконечный цикл
button:
in temp, PINB ; считываем уровни с порта B
out EEARL, temp ; запись адреса откуда будем читать
sbi EECR, EERE ; считываем из памяти EEPROM
nop
in temp, EEDR ; копируем в регистр
out PORTD, temp ; зажигаем светодиоды
reti
Спасибо огромное за проделанный труд!Очень помогли! ;)
Рад помочь ;). На днях у меня появилась отладочная плата STK-500, так там как раз стоит ATmega8515 - с ней побалуюсь, протестирую код, что написал.
Помогите написать код для такого задания:
По линейке светодиодов на плате должен перемещаться горящий светодиод. Он начинает свое движение с n-ной позиции, которая определяется нажатой кнопкой, и заканчивает свое движение в крайне правой позиции, после этого процесс повторяется. Время свечения в каждой позиции определяется прерыванием по переполнению ТС1.
Не могу разобраться с прерыванием.
Заранее спасибо