По поводу RA4 - я указал кусок кода просто как пример, у меня RA4 в других целях используется.
Программу делаю для электронного регулятора громкости. Проявляется в том что, после нажатия кнопки смены режима (32) или любой другой кнопки, код приходит не 32 а той кнопки которая нажималась до этого.
Вот код главного цикла, и процедура обработки кода с пду:
Цитата:
void ir()
{
if (RC5.received) {
cmd = RC5.command;
RC5.received = 0 ; // Команда обработана
if (cmd==16) vol_up();
if (cmd==17) vol_down();
if (cmd==11) rez_stb();
if (cmd==12) rez_mute();
if (cmd==32) rez_mode_up();
if (cmd==33) rez_mode_down();
}
}
void main(){
// инициализация стейт машины
RC5_state = RC5_IDLE ;
CMCON = 0x07;
OPTION_REG = 0x03;
TRISB = 0b01110001;
PORTB = 0b00000000;
TRISA = 0b01000000;
PORTA = 0b00000011;
// Настройка TMR0 --> Настройки зависят от кварца
// Настройки TMR0 : Предделитель = 1:16 - 1 тик = 16 usec / 62.5 Khz
TMR0 = 0; // предустановка TMR0
T0IF_bit = 0;
T0IE_bit = 0; // отключить прерывания от TMR0
// Enable external interrupt
INTEDG_bit = 0; // начинаем со спада
INTF_bit = 0; // сброс флага прерывания INT
INTE_bit = 1; // разрешить прерывание INT
GIE_bit = 1; // разрешить все прерывания
RC5.received = 0 ;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Soft_I2C_Init();
do {
buttons();
encoder();
ir();
} while(1); // бесконечный цикл
}
|