прерывания в 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
Сообщение отредактировал
Pamir - Сб, 08.10.2011, 22:16
|
|
|
|
ADMIN |
Дата: Вс, 09.10.2011, 03:09 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Если добавить строчку Config MCLRE_OFF, то все будет работать. И еще, лучше с прерываниями работать так, как здесь написано
|
|
|
|
Pamir |
Дата: Вс, 09.10.2011, 20:41 | Сообщение # 3 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Да, спасибо все заработало
Тему на которую Вы указали я читал еще до этого, однако я не понял почему: ........Не надо пользоваться Disable - resume - Enable - это какая-то непонятная хрень на программном уровне.......
без них симуляция в протеусе не идет, да и потом почти во всей литературе которую я читал присутствуют эти команды
|
|
|
|