top of page

Внешнее прерывание. Применение реле


  • Среда разработки: microC PRO for PIC

  • Микроконтроллер: PIC16F887

  • Программатор: PICkit 3

 

Код программы:

const char kod[]={0b00010100, 0b11010111, 0b10001100, 0b10000101, 0b01000111, 0b00100101, 0b00100100, 0b10010111, 0b00000100, 0b00000101}; // Коды индикатора

int count; // Переменная счетчик int i =0; void interrupt(){ // Функция обработки прерываний if(INTCON.INTF) { // Если прерывание от внешнего источника count = 0; // Сбросим счетчик PORTB.RB1 = 0; // Выключим реле INTCON.INTF = 0; // Сбросим флаг прерывания } }

void setDigit(char d){ PORTA = d; PORTB.RB7 = d.B7; PORTB.RB6 = d.B6; }

void main() { // Основная программа ANSEL = 0b00000011; // Настраиваем аналоговые вывода ANSELH = 0x00; // Как цифровые TRISB.RB0 = 1; // Вход внешнего прерывания TRISC.RC5 = 1; // Вход фотодатчика TRISB.RB1 = 0; // Выход на реле TRISE.RE0 = 0; PORTE.RE0 = 1; // Реле отключено TRISE.RE1 = 0; PORTE.RE1 = 1; // Настройка портов управления анодами TRISE.RE2 = 0; PORTE.RE2 = 1; TRISA = 0b11000000; // Выводы данных на дисплей TRISB = 0x01; // Ничего не отображаем INTCON.INTE = 1; // Разрешаем внешнее прерывание INTCON.INTF = 0; // Сбросим флаг внешнего прерывания INTCON.PEIE = 1; // Разрешим прерывания от периферии INTCON.GIE = 1; // Глобальное разрешение прерываний count = 0; do { PORTE = 0b0000011; setDigit(kod[count]); if (Button(&PORTC, 5,200, 0)) { count ++; PORTB.RB1 = 0; } if (count> 9) { count=0; PORTB.RB1 = 1; } }while(1); }

0 комментариев

Недавние посты

Смотреть все

Бегущий огонь

bottom of page