//u08 pinStatus = 0; //volatile u08 pinStatus; int main(void) { LED_DDR = 1<<LED1; InitExternalInterrupts(); InitUSART(); buffer[0] = 48; buffer[1] = 49; buffer[2] = 50; buffer[3] = 51; pinStatus = 0; count = 0; u08 tempo = 0; #ifdef _DEBUG u08 var1 = 0; u08 var2 = 0xFF; #endif sei(); // Включаем прерывания while (1) { //DebugOutput(); if (((pinStatus & (SENS1_SB|SENS2_SB)) == 0) && (pinStatusPrev == 0) && (pinStatus & (DIR1|DIR2))) { pinStatusPrev = pinStatus; pinStatus = 0; } if ((pinStatus & (SENS1_SB|SENS2_SB)) == SENS12_SB) { //ReadSensors(); //SendByte(pinStatus); if ((pinStatus & (DIR1|DIR2)) == (pinStatusPrev & (DIR1|DIR2))) { if ((pinStatus & (DIR1|DIR2)) == DIR1) count++; else if ((pinStatus & (DIR1|DIR2)) == DIR2) count--; // Отправляем результат SendByte(count); //pinStatus &= ~(SENS1_SB|SENS2_SB); // } pinStatusPrev = 0; } } }
int main (void) { SCS |= 0x20; // Разрешить генератор с кварцевым резонатором 12МГц while( !(SCS & 0x40) ); //Подождать стабилизации частоты генератора // Настроить порт SCS |= 0x01; //Разрешить быстрый ввод/вывод FIO2DIR = 0x00FF; // Биты 0-7 порта 2 на вывод для управления светодиодами FIO2MASK = 0; //Все разряды порта 2 работают в быстром режиме FIO2PIN = 0x00; // Выключить светодиоды InitVIC(); //Инициализация системы прерываний InitExternalInterrupts(); //Инициализация внешних прерываний while (1)//Loop forever { //Ничего не делаем - все происходит в функции обработки прерывания } return 0; }