Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
прерывания в pic 16F630
Pamir Дата: Сб, 08.10.2011, 21:55  |                                                                                                                Сообщение # 1
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Всем Ку!
Если я правильно понял из даташита , то имеются возможность по прерываниям : по изменению пинов порта А, внешнее прерывание по А.2/int и от TMR0, но запустить их у меня почемуто не получилось. С прерываниями вроде до этого момента дружил. На 877 пике все их без проблем отрабатывал. А здесь другие биты по кофигурации... может не разобрался...

Device = 16F630

Xtal= 4


TRISA=%00000100 '2 вход,остальное выходы
TRISC=%00000011 '0 и 1 входы,остальное выходы

'-----------прерывания--------------
OPTION_REG.7=1 ;отключаем потягивающие резисторы порта а
OPTION_REG.6= 1;прерывания по возрастающему фронту RA2/INT
OPTION_REG.5=0 ;внутренний генератор
OPTION_REG.4=0
OPTION_REG.3=0;предделитель перед тм0
OPTION_REG.2=1
OPTION_REG.1=1; предделмиель 1/256
OPTION_REG.1=1

INTCON.7=1 ;разрешаем глоб прерывания
INTCON.6=0 ;рапрещаем прерывания от переферии
INTCON.5=1;включаем тм0
INTCON.4=1;прерывания по RA2/int
INTCON.3=0; отключаем прерывания по изменению порта а
INTCON.2=0
INTCON.1=0
INTCON.0=0

CMCON=7 'отключаем компораторы
WPUA=%00000000 ' отключаем потягивающие резисторы порта а
IOCA=%00000100 'разрешаем прерывания по а.2 /int

On Interrupt GoTo myint ' Если произошло прерывание, переходим к обработке этого прерывания

Symbol power = PORTC.2
power=0

'------------основная программа---------------

main:

GoTo main

Disable'-------------обработка прерывания------------------
myint:


If INTCON.1=1 Then power=~power:INTCON.1=0 ; сбрасываем флаги
If INTCON.2=1 Then power=~power:INTCON.2=0
Resume

Enable


End

Прикрепления: 630.rar (45.6 Kb)

Сообщение отредактировал Pamir - Сб, 08.10.2011, 22:16
ЯНДЕКС Дата: 08.10.2011
ADMIN Дата: Вс, 09.10.2011, 03:09  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Если добавить строчку
Config MCLRE_OFF, то все будет работать. И еще, лучше с прерываниями работать так, как здесь написано
Pamir Дата: Вс, 09.10.2011, 20:41  |                                                                                                                Сообщение # 3
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Да, спасибо все заработало

Тему на которую Вы указали я читал еще до этого, однако я не понял почему:
........Не надо пользоваться Disable - resume - Enable - это какая-то непонятная хрень на программном уровне.......

без них симуляция в протеусе не идет, да и потом почти во всей литературе которую я читал присутствуют эти команды
  • Страница 1 из 1
  • 1
Поиск: