Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Электроника ФР-765 https://www.cyberforum.ru/ electronics-beginners/ thread2103001.html
КУпил фоторезюк, но блин, он на яркость света не реагирует... сопротивление зашкаливает. Может работает немного по иному? А то я проверял так: к лампочке поднес - измерил, пальцем прикрыл -...
Электроника Мобильники
Необходимо соеденить 2 телефона выходами гарнитур, на прямую ужасно рипит, подключил ФВЧ на микрофонные входы но всеравно при звонке обоих телефонов есть рипение(хоть и менее ужасное) как правильно...
FT232RL не опознается ПК Электроника
Подключил FT232RL следующим образом: +5В от ПК - 20,4 выводы общий - 7,18,21,26,25 DM - 16 DP - 15 Между 17 выводом и землей - кондер 0.1 Подключил к ПК - не опознает ее....
Электроника Как соеденить генератор на TL494 и P-канальный IRF9630 Здравствуйте, Подскажите пожалуйста, как подключить полевой P-канальный транзистор (IRF9630) к выходу генератора на TL494 ?? http://s017.***********/i416/1110/1f/7723aa3bb310.jpg Подскажите... https://www.cyberforum.ru/ electronics-beginners/ thread2102998.html
Электроника Nec mpa1478 https://www.cyberforum.ru/ electronics-beginners/ thread2102997.html
Здравствуйте, помогите плз подобрать замену м\с Nec mPA1478, даташеет нашел почитал понял что сборка из 4 дарлингтонов, если правилно понимаю то можно заменить 4 транзистарами, по каким параметрам...
Электроника Регулятор напряжения 5 - 50 В
Здравствуйте, Позвольте задать еще один вопрос. Подскажите пожалуйста может кто нибудь делал регултяор постоянного напряжения от 5 до 50 В мощностью около 100Вт. Только пиания должно быть не от...
L297 не понимает cw\ccw Электроника
Собрал схему (принципиальная схема, черновая разводка в формате EagleCad. Чистовая разводка в формате топора) всё собрал, распаял. включил. не работает. случайно задел микруху L297 - горячая!...
Электроника Возможная индуктивность на входе NPN транзистора? Я ложанулся и девайс сгорел((( Возможная причина это наличие большой индуктивности на колеторе. Но возможно ее там и нет. Если по тупому, то напряжение на коллектор NPN идет от генератора... https://www.cyberforum.ru/ electronics-beginners/ thread2102994.html
Электроника LCD панель SHARP LM089HB1T02 https://www.cyberforum.ru/ electronics-beginners/ thread2102993.html
Досталась мне на халяву сенсорная панель (принтер на работе списали). В инете инфы по ней = 0. Аппарат с виду интересный жалко только что будет валяться похоже без дела. Мож кто че слышал, видел на...
Электроника Нужен корпус под жк WH1601-1602 Может кому поподаля корпус с окошком под жк WH1601-1602, размер платы - 80х150. Очень надо для моего проекта. Пол рунета перерыл - нет ничего подходящего. Размер дырки - где-то 60х15 мм. https://www.cyberforum.ru/ electronics-beginners/ thread2102992.html
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 225
0

Ю.Ревич Практическое Програмирование AVR на асме...

24.10.2011, 03:13. Просмотров 4772. Ответов 5
Метки (Все метки)

Прикупил ету чудную книженцею "Ю.Ревич Практическое Програмирование Микроконтролеров AVR на ассемблере
2-е издание" (Также прочитал и первое издание). Начал повторять коди програм из книги и тут непонятно мне
АВР студия 4.19 начала ругатса на одну из строк програмы:
Код
D:\AVR Kurs\Listing_5.13_Caunter\Counter.asm(63): error: Illegal attempt to re-use INT0 as label
Вот сам код:
Код
.divice ATmega16
.ymstude "m16def.yms"
.def temp=r16 ;Робоча змінна
.def Count_time=r17 ;Щотчик преривання
.def Counter=r18 ;Щотчик нажать
.def Flag=r19 ;Регістр флагів: Якщо біт 0 встановлений, то відбулось нажаття, переходимо до очікування відпускання

;==================НАЛАШТУВАННЯ ТАБЛИЦІ ВЕКТОРІВ ПРИРИВАННЯ==================

.CSEG
.ORG $000        ; (RESIT)
RJMP   Riset
.ORG $002
RJMP INT0        ; (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
RJMP  TIM0       ; (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         ; Кінець таблиці преривань

;=============================ОБРОБКА ПРЕРИВАНЬ=========================

LDI    R16,Low(ROMEND)   ; Ініціалізація стека
OUT    SPL,R16         ;
LDI    R16,High(ROMEND)
OUT    SPH,R16

INT0: ;Преривання по кнопці
;Першим ділом забороняємо преривання від кнопки
clr temp ;Очищаєм регістр temp
out GIMSK,temp ;И переносимо значенння на флаги преривання

ldi temp,$FF
out GIFR,temp ;GIFR очищуєм записом одиниць

sbrs Flag,0 ;Пропускаєм якщо біт в регістрі встановлений
rjmp Push_pin ;Якщо 0, то було нажимання
cbr Flag,1 ;Інакше було відпускання, очищаєм біо 0
yms Counter ;Кнопка була відпущена, збільшуєм щотчик
out PortB,Counter ;Виводимо значення щотчика в PortB
ldi Count_time,50 ;Встановлюємо затримку 0,2 сек
rjmp ent_int ;На вихід

Push_pin: ;Було нажаття
sbr Flag,1 ;Встановити біт 0
ldi Count_time,128 ;Затримка 0,5 сек
ent_int:
ldi temp,0b00000011 ;Запуск Timer0 вхідна частота 1:64
out TCCR0,temp
reti ;кінець обробки преривання кнопки

TIM0:;Обробка преривання Timer0
dec Count_time ;В кожному прериванні зменшуєм на 1
breq end_timer ;Якщо ноль, то на кінець відліку
reti ;Інакше вихід із преривання
end_timer:
clr temp
out TCCR0,temp ;Зупиняєм таймер
sbrc Flag,0 ;Провряєм біт 0 регістра флагів
rjmp Push_tim ;Якщо 1, то було нажаття
ldi temp,(1<<ISC01) ;Інакше встановлюєм преривання INT0 по спаду
out MCUCR,temp
rjmp end_tim ;На вихід
Push_tim: ;Якщо було преривання
ldi temp,(1<<ISC01|1<<ISC11) ;Встановлюєм преривання INT0 по фронту
out MCUCR,temp
end_tim:
ldi temp,(1<<INT0) ;ДОзволяєм преривання INT0
out GIMSK,temp
reti ;Кінець роботи прериванння таймера

RESIT:

ldi temp, 0b00000100 ;Настроюем порт D як вхід
out PortD, temp      ;Із підтягуючим резистором
ldi temp, 0b11111111 ;Настройка всіх портів B як вихід
out DDRB, temp

clr Counter ;Очищаєм регістр Counter
clr Flag ;Очищаєм Flag

ldi temp,(1<<TOIE0) ;Дозволяєм преривання Timer0
out TIMSK,temp
ldi temp,(1<<ISC01) ;Встановлюєм преривання INT0 по спаду
out MCUCR,temp
ldi temp,(1<<INT0)  ;Дозволяєм преривання INT0
out GIMSK,temp
sei ;Дозволяєм преривання
Gcykler: ;Основний пустий цикл
rjmp Gcykler


Вернуться к обсуждению:
Ю.Ревич Практическое Програмирование AVR на асме...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2011, 03:13
Готовые ответы и решения:

АЦП, вопрос по книге Ю.Ревич "Практическое программирование
Ю.Ревич &quot;Практическое программирование МК AVR на языке ассемблер&quot; страница 46 Заметки на полях ...

Как однажды Ревич попал в переплёт
На экране ноутбука книжки читать неудобно, да и от камина греется зараза, вино опять же - после...

AVR JTAG mkI + avarice + avr-gdb + Linux
По какой то неведомой причине мне причине не могу нормально подключится к серверу avarice через...

AVR AVRISP STK500 V3.0 USB ISP Programmer for AVR IC
Люди помогите плз. не могу разобраться. приобрел этот чудный девайс (AVR AVRISP STK500 V3.0 USB...

5
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.