Подскажите пожалуйста начал разбираться с мплаб и HI-TECH
такой код простой, по переполнению таймера меняет состояние одной из ножек
и по нажатию кнопки (появлению там единицы) должен подать на RA3
проверяю в протеусе подцепил кнопку на RA0 подаю +5в туда но это событие не обрабатывается
а если в коде меняю параметр в условии на противоположном то условие выполняется (вывод на RA3 единицу и запрет прерывания)
вот сам код
Код
#include <htc.h>
/*
* Interrupt test for PIC
*
* Copyright (C)1997 HI-TECH Software.
* Freely distributable.
*/
#define BUTTON RA0 //bit 1 of PORTC
static volatile long count;
static volatile bit bad_intr;
void
main(void)
{
/* setup stuff */
T0CS = 0; // Timer increments on instruction clock
TRISA = 0x01; // Port A is input
TRISB = 0xFE; // Port B bit 0 is output
T0IE = 1; // Enable interrupt on TMR0 overflow
GIE = 1; // Global interrupt enable
CLRWDT(); // Idly kick the dog
//RA3=1;
while(1){
if (BUTTON==1){RA3=1; GIE=0;};
};
}//End of main
static void interrupt
isr(void) // Here be interrupt function - the name is
// unimportant.
{
if(!T0IF) // Was this a timer overflow?
bad_intr = 1; // NO! Shock horror!
count++; // Add 1 to count - insert idle comment
T0IF = 0; // Clear interrupt flag, ready for next
PORTB ^= 1; // toggle bit 0 of Port B, to show we're alive
}
заранее спасибо
Сообщение отредактировал Vny4ek - Apr 20 2011, 16:52