Ejemplo n.º 1
0
//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;
		}
    }
	
} 
Ejemplo n.º 2
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;
}