| Автор | Сообщение |
pavel-pervomaysk Your editor Сообщения: 8037
|
Здесь будем работать с обучением и примерами на асемблере для атмелов .
Для начала кидаю команды на асемблере , переношу из другой темы , там удалил .
Команды для AVR.rar 12,83 КБ Скачано: 2922 раз(а)
|
|
pavel-pervomaysk Your editor Сообщения: 8037
|
Приложу ка я свою первую полезную подпрограмку для работы с Энкодером типа PEC-16 :
.def tmp = r16
.equ encod = PB2
.equ enc_2 = PB1
.org INT2addr // прерывание по внешнему сигналу INT2 для энкодера громкости
rjmp Encoder // обработчик прерывания от энкодера
.CSEG // сегмент кода
//Векторы прерываний:
.org 0 // по адресу 0 вектор сброса
rjmp RESET // перейти на метку ресет
RESET:
in temp,MCUCR
ori temp,(1
out MCUCR,temp
in temp,GIMSK
ori temp,(1
out GIMSK,temp ;разрешаем внешнее прерывание INT2
sei
// тут пишем всякую инициализацию //
// Подпрограмма
Encoder:
sbi PORTD,7 // контроль на PD7 внешнего прерывания
push tmp // сохранение темп
in tmp,SREG // читаем статус регистр
push tmp // сохраняем его
sbis pinb,encod // проверяем наличие прерывания
rcall encoder_read // читаем энкодер
pop tmp // извлекаем статус регистр
out SREG,tmp // восст. SREG
pop tmp // восст. temp
cbi PORTD,7 // гасим светодиод контроля
reti // выходим и разрешаем прерывания
Encoder_read: // чтение энкодера
sbis pinb,1 // если установлен бит 1 в порте то пропуск след ком
rcall plus // вызываем плюс
sbic pinb,1 // если очищен бит 1 в порте то пропуск след ком
rcall minus // вызываем минус
reti // выход из прерывания
minus: //
rcall lcd_sub //
reti //
plus: //
rcall lcd_add //
reti //
При подключении энкодера к МК , необходимо паралельно шинам прицепить емкости 0,1мКф , и включить пулапы . Я дополнительно навешал 2 резистора по 10к на +5в. |
|
OleghkA . Сообщения: 593
|
есть код
| Цитата: |
.def Temp=R19
...
.dseg
....
Digit: .byte 4
.macro stsi
ldi Temp, @1
out @0, Temp
.endmacro
/в теле вызов макро
stsi Digit ,0
stsi Digit+1,0
stsi Digit+2,0
stsi Digit+3,0
|
где
ldi Загрузить константу = в порт с адресом содержащимся в Temp будет записано @1
тоесть первый параметр?
out Запись в порт = в порт по адресу содержащемуся в Temp будет записано @0
нулевой параметр?
как правильно интерпритировать @0 и @1?
это
| Цитата: | | Макрос может иметь до 10 параметров, к которым в его теле обращаются через @0-@9. При вызове параметры перечисляются через запятые |
я читал, где нулевой, где первый параметр?
при вызове макро
stsi Digit, 0
так подстановка произойдет?
ldi Digit, 0
out Digit, Temp
если да, ор нет примеры можно с 5 параметрами, например? |
|
anatoliyttt Новичок Сообщения: 21
|
Паша, а подпрограммы для работы с i2c выложить можешь? |
|
pavel-pervomaysk Your editor Сообщения: 8037
|
anatoliyttt, В мыло пиши, дам. Кстати в проэкте тюнера есть все готовое.  |
|
Konstantin_18 Участник Сообщения: 3389
|
pavel-pervomaysk, Как создать битовую переменную, чтобы работать с ее битами так-же как с битами портов ВВ?
Контроллер ATMEGA48. |
|
|
Текущий раздел»
Программное обеспечение»
Микроконтроллеры (Микроконтроллеры - AVR-ы, PIC-и и другие)
|
|
|