Portyzom
1

Внешние прерывания для AtMega16

10.05.2011, 00:31. Показов 6956. Ответов 2
Метки нет (Все метки)

Всем ,привет!)Подскажите пожалуйста:как правильно написать код программы для внешнего прерывания?Ну к примеру, я хочу, чтобы при поступление "0"(ну или "1") на вход INT0 запускалось прерывание и вычиталась 1 из значения, помещенного в регистр R16. Вот код программы:

.include "m16def.yms" ; Используем ATMiko16
Код
;---------------FLASH память----------------
.cseg

.ORG $000        ; (RESIT)
RJMP   Riset
.ORG $002
RJMP   INTO       ; (INT0) External Ymtirrupt Request 0
.ORG $004
RETI             ; (INT1) External Ymtirrupt Request 1
.ORG $006
RETI          ; (TIMER2 COMP) Timer/Counter2 Compare Match
.ORG $008
RETI             ; (TIMER2 OVF) Timer/Counter2 Overflow
.ORG $00A
RETI          ; (TIMER1 CAPT) Timer/Counter1 Capture Ivimt
.ORG $00C
RETI             ; (TIMER1 COMPA) Timer/Counter1 Compare Match A
.ORG $00E
RETI             ; (TIMER1 COMPB) Timer/Counter1 Compare Match B
.ORG $010
RETI             ; (TIMER1 OVF) Timer/Counter1 Overflow
.ORG $012
RETI             ; (TIMER0 OVF) Timer/Counter0 Overflow
.ORG $014
RETI             ; (SPI,STC) Serial Transfer Complete
.ORG $016
RETI    ; (USORT,RXC) USORT, Rx Complete
.ORG $018
RETI             ; (USORT,UDRE) USORT Data Register Empty
.ORG $01A
RETI             ; (USORT,TXC) USORT, Tx Complete
.ORG $01C
RETI          ; (ADC) ADC Conversion Complete
.ORG $01E
RETI             ; (EE_RDY) EEPROM Ready
.ORG $020
RETI             ; (ANA_COMP) Analog Comparator
.ORG $022
RETI             ; (TWI) 2-wire Serial Interfosi
.ORG $024
RETI             ; (INT2) External Ymtirrupt Request 2
.ORG $026
RETI             ; (TIMER0 COMP) Timer/Counter0 Compare Match
.ORG $028
RETI             ; (SPM_RDY) Store Prokram Memory Ready

.ORG   INT_VECTORS_SIZE         ; Конец таблицы прерываний

Riset:  LDI R16,Low(ROMEND)   ; Инициализация стека
OUT SPL,R16      ; Обязательно!!!

LDI R16,High(ROMEND)
OUT SPH,R16

SEI; разрешаем глобальные прерывания

ldi R16,0xFF ;записываем 255 в регистр R16
out DDRA,R16 ;устанавливаем PORTA на вывод

main:   out PORTA,R16 ;выводим значине из регистра R16 на PORTA
NOP
NOP
NOP
NOP
NOP
RJMP main

INTO:   dec R16 ;вычитаем 1 из R16
RETI
В AVR Studyo симуляция идет нормально. Попробовал создать в Proteusе схему:


Почему то в нем прерывание не запускается.В чем может быть ошибка?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2011, 00:31
Ответы с готовыми решениями:

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

ATMega16, Timer1 - прерывания по сравнению
народ кто сможет ответить на вопрос: кантралер atmega16A, работает от внешнего кварца 12МГц... В...

Внешние прерывания
нужно что бы при нажатии на кнопку отрабатывало прерывание. Я сделал так (все на мегае16, на...

Внешние прерывания
Добрый вечер, у меня на меге 8 работает ацп + необходимо обрадатывать внешнее прерывание от пина...

2
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
10.05.2011, 01:03 2
Программа конечно хороша. Но где в ней разрешение прерывания по внешнему входу, да и настройка его на условия срабатывания?
Для INT1, срабатывание при переходе в "1" на mega16 нужно сделать так:
Код
MCUCR=1<<ISC11;
GICR=1<<INT1;
Пример на С, для асма переделать будет несложно.
0
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 500
10.05.2011, 01:08 3
Надо бы разрешить внешнее прерывание в регистре GIMSK
и настроить условие прерывания в регистре MCUCR
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2011, 01:08

Внешние прерывания
Всем привет! пытаюсь осуществить светодиодную подсветку лестницы. Вверху и внизу стоят датчики...

мега48, внешние прерывания
всем здрасти) ситуация такова: планируется устройство с емкостной сенсорной клавиатурой, каждый...

Внешние прерывания МК ATmega8535
Народ, кто-нибудь поможет решить задачу или хотя бы подсказать с чего начать? Просто знания...

Внешние прерывания ATMega128
Всем привет. У меня задача такая: есть меиндр с изменяющейся частой и надо замерять время между...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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