Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Прерывания PIC

Непрочитано 09.10.2010, 14:01  
milssky
Прохожий
 
Регистрация: 23.09.2010
Сообщений: 8
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
milssky на пути к лучшему
По умолчанию Прерывания PIC

Пытаюсь разобраться с прерывания. Выбрал 16F84A и пытаюсь моделировать в протеусе. Поставил задачу: при нажатии на кнопочку светодиод загорается и тухнет через небольшое время (около 0.5 секунды). Использую RB0/INT как источник внешнего прерывания. На RA0 висит светодиод. Код
Код:
;=================================================  ========================
; Конфигурация
;=================================================  ========================
	LIST P=16F84A			; устанавливаем тип МК
	#include p16F84A.inc	; подключаем шапку
	__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC	; конфигурация МК
;=================================================  ========================
; Описание регистров общего назначения
;=================================================  ========================
W_backup 		EQU		0x20		; копия аккумулятора
S_backup		EQU		0x21		; копия регистра статус
Dig1			EQU 	0x22		; младший разряд индикатора
Dig2			EQU 	0x23		; 2 разряд индикатора
Dig3			EQU 	0x24		; 3 разряд индикатора
Dig4			EQU 	0x25		; старший разряд индикатора
Rank			EQU		0x26		; номер разряда
Delay			EQU		.255		; задержка
Counter			EQU		0x28		; счеьтчик 

;=================================================  ========================
; Программа
;=================================================  ========================
			ORG			0x00
			GOTO		Main
;=================================================  ========================
; Подпрограммы и прерывания
;=================================================  ========================
			ORG			0x04
			MOVWF W_backup			; сохранение текущего значения аккумулятора
			MOVF STATUS,w			; помещаем регистр STATUS в аккумулятор
			MOVFW S_backup			; схраняем значение регистра STATUS
			MOVLW Delay				
			MOVWF Counter
			BSF PORTA,0				; высокий уровень на 0 ноге порта а
wwww		DECFSZ Counter
			GOTO wwww
			MOVF S_backup,w			; возвращаем значения регистра STATUS
			MOVWF STATUS
			SWAPF W_backup,f
			SWAPF W_backup,w
			BCF INTCON,INTE			; запрещаем прерывание на RB0
			RETFIE					; уход из прерывания
;=================================================  ==========================
; Главный цикл
;=================================================  ==========================
Main 		BSF STATUS,5			; идем в 1 банк
			BSF INTCON,7			; разрешаем прерывания
			BSF	INTCON,4			; разрешаем прерывания по INT
			MOVLW .1
			MOVWF TRISB				; порт В на вход
			BCF TRISA,0				; 0 вывод порта А на выход
			BSF OPTION_REG,6		; Прерывание на RB0 по переднему фронту
			BSF INTCON,4			; Разрешаем внешнее INT прерывание
			BCF STATUS,5			; идем в 0 банк
			CLRF PORTA				; 0 на всех входах порта А
			NOP						; Ждем прерывание по кнопочке
			GOTO Main
			end
Не работает зараза =( Направьте на путь истинный =)
Реклама:
milssky вне форума  
Сказали "Спасибо" milssky
warel (27.06.2019)
Непрочитано 09.10.2010, 15:22  
аtаs_stas
Заблокирован
 
Регистрация: 23.08.2010
Сообщений: 540
Сказал спасибо: 20
Сказали Спасибо 93 раз(а) в 78 сообщении(ях)
аtаs_stas на пути к лучшему
По умолчанию Re: Прерывания PIC

Код:
			NOP
			GOTO Main
			end
А по идее должно быть так

Код:
Loop:
			NOP
			GOTO Loop
			end
И ещё... возьмите за правило... сначала все настройки портов, периферии и прерываний, а потом уже разрешение прерываний... в самую последнюю очередь... а первой командой в Main - запрет всех прерываний...

Последний раз редактировалось аtаs_stas; 09.10.2010 в 15:30.
аtаs_stas вне форума  
Сказали "Спасибо" аtаs_stas
warel (27.06.2019)
Непрочитано 09.10.2010, 16:34  
milssky
Прохожий
 
Регистрация: 23.09.2010
Сообщений: 8
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
milssky на пути к лучшему
По умолчанию Re: Прерывания PIC

Все равно не работает =(

Код:
;=================================================  ========================
; Программа
;=================================================  ========================
            ORG            0x00
            GOTO        Main
;=================================================  ========================
; Подпрограммы и прерывания
;=================================================  ========================
            ORG            0x04
            MOVWF W_backup            ; сохранение текущего значения аккумулятора
            MOVF STATUS,w            ; помещаем регистр STATUS в аккумулятор
            MOVFW S_backup            ; схраняем значение регистра STATUS
            MOVLW Delay                
            MOVWF Counter
            BSF PORTA,0                ; высокий уровень на 0 ноге порта а
wwww        DECFSZ Counter
            GOTO wwww
            MOVF S_backup,w            ; возвращаем значения регистра STATUS
            MOVWF STATUS
            SWAPF W_backup,f
            SWAPF W_backup,w
            BCF INTCON,INTE            ; запрещаем прерывание на RB0
            RETFIE                    ; уход из прерывания
;=================================================  ==========================
; Главный цикл
;=================================================  ==========================
Main         BCF INTCON,7            ; запрещаем все прерывания
            BSF STATUS,5            ; идем в 1 банк
            MOVLW .1
            MOVWF TRISB                ; порт В на вход
            MOVLW .0
            MOVWF TRISA                ; выводы порта А на выход
            BCF STATUS,5            ; идем в 0 банк
            CLRF PORTA                ; 0 на всех входах порта А
            CLRF PORTB                ; ---------------------- B
            BSF INTCON,7            ; разрешаем прерывания
            BSF    INTCON,4            ; разрешаем прерывания по INT
            BSF OPTION_REG,6        ; Прерывание на RB0 по переднему фронту
Loop        NOP                        ; Ждем прерывание по кнопочке
            GOTO Loop
            end
Хотя по идее должно. Может я где-то туплю?
milssky вне форума  
Сказали "Спасибо" milssky
warel (27.06.2019)
Непрочитано 09.10.2010, 16:48  
аtаs_stas
Заблокирован
 
Регистрация: 23.08.2010
Сообщений: 540
Сказал спасибо: 20
Сказали Спасибо 93 раз(а) в 78 сообщении(ях)
аtаs_stas на пути к лучшему
По умолчанию Re: Прерывания PIC

RB0 подтяните к земле через сопротивление 10кОм, а кнопку к + питания через 270 Ом...
аtаs_stas вне форума  
Эти 2 пользователя(ей) сказали Спасибо аtаs_stas за это сообщение:
milssky (09.10.2010), warel (27.06.2019)
Непрочитано 09.10.2010, 17:02  
milssky
Прохожий
 
Регистрация: 23.09.2010
Сообщений: 8
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
milssky на пути к лучшему
По умолчанию Re: Прерывания PIC


Заработало. Спасибо огромное. Подтяжки нужны чтобы точно определить начальный уровень на ножке?
milssky вне форума  
Сказали "Спасибо" milssky
warel (27.06.2019)
Непрочитано 09.10.2010, 18:23  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Прерывания PIC

А не проще подтяжку вывода к VDD , а кнопку на вывод и на землю напрямую ?!
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (27.06.2019)
Непрочитано 09.10.2010, 18:43  
milssky
Прохожий
 
Регистрация: 23.09.2010
Сообщений: 8
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
milssky на пути к лучшему
По умолчанию Re: Прерывания PIC

да может и проще Объясните на кой вообще подтяжки?)
milssky вне форума  
Сказали "Спасибо" milssky
warel (27.06.2019)
Непрочитано 09.10.2010, 18:46  
аtаs_stas
Заблокирован
 
Регистрация: 23.08.2010
Сообщений: 540
Сказал спасибо: 20
Сказали Спасибо 93 раз(а) в 78 сообщении(ях)
аtаs_stas на пути к лучшему
По умолчанию Re: Прерывания PIC

Тоже хотел дать такой совет... а вдруг у него там не кнопка... а кнопкой в Протэзе эмулирует какой-то сигнал...
"на землю напрямую"... он сейчас в Протэзе, а через пять минут с железом... неправильная настройка на выход с единицей и... кнопкой на землю... "PIC гавно, пошёл покупать AVR..." ....
Уж лучше пусть сопрот 270 Ом поставит...
аtаs_stas вне форума  
Сказали "Спасибо" аtаs_stas
warel (27.06.2019)
Непрочитано 09.10.2010, 18:48  
аtаs_stas
Заблокирован
 
Регистрация: 23.08.2010
Сообщений: 540
Сказал спасибо: 20
Сказали Спасибо 93 раз(а) в 78 сообщении(ях)
аtаs_stas на пути к лучшему
По умолчанию Re: Прерывания PIC

Сообщение от milssky Посмотреть сообщение
да может и проще Объясните на кой вообще подтяжки?)
Чтобы избежать неопределённости состояния пина настроенного на ввод из-за его высокого входного сопротивления... чтобы "шум космоса" не ловил...
аtаs_stas вне форума  
Сказали "Спасибо" аtаs_stas
warel (27.06.2019)
Непрочитано 09.10.2010, 19:14  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Прерывания PIC

аtаs_stas, Понял , предохраняешься значит.
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (27.06.2019)
 

Метки
pic, нуб, прерывания
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с PIC 16F873 и прерыванием по RB0 BorisVV Микроконтроллеры, АЦП, память и т.д 9 02.10.2010 23:58
Вопросы MikroC + PIC Vladimir-SV Микроконтроллеры, АЦП, память и т.д 9 30.07.2010 13:53
Прерывания в прерываниях ATmega8 7Fantomas7 Микроконтроллеры, АЦП, память и т.д 35 07.07.2010 10:12
Вложенные прерывания HITECH PIC16 picavr Микроконтроллеры, АЦП, память и т.д 17 07.03.2010 17:39
Вход в прерывания для PIC микроконтроллеров dimmich Микроконтроллеры, АЦП, память и т.д 4 06.12.2009 17:17


Часовой пояс GMT +4, время: 15:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.