コード例 #1
0
ファイル: Lab10_mine2017.c プロジェクト: rithma/EdX
int main(void){ 
  TExaS_Init(SW_PIN_PE210, LED_PIN_PB543210,ScopeOff); // activate grader and set system clock to 80 MHz
	ports_Init();
	SysTick_Init();
	
 
  
  EnableInterrupts();
	
	S = goW;
	
  while(1){
		TRAFLIGHT = FSM[S].trafOut;
		PEDLIGHT = FSM[S].pedOut;
		SysTick_Wait10ms(FSM[S].delay);
		Input = SENSORS;
		S = FSM[S].next[Input];
     
  }
}
コード例 #2
0
int main(void)
{
	stdout = &usart_str; // указываем, куда будет выводить printf 

	ports_Init();

	MT8870_Init();

	USART_init(); // включаем uart

	INT0_Init();

	timerDelayInit();

	nDevices = search_ow_devices(); // ищем все устройства

	printf("---------- Found %d devices ----------", nDevices);


	for (unsigned char i=0; i<nDevices; i++) // теперь сотируем устройства и запрашиваем данные
	{
		// узнать устройство можно по его груповому коду, который расположен в первом байте адресса
		switch (owDevicesIDs[i][0])
		{
			case OW_DS18B20_FAMILY_CODE: { // если найден термодатчик DS18B20
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Thermometer DS18B20"); // печатаем тип устройства 
				DS18x20_StartMeasureAddressed(owDevicesIDs[i]); // запускаем измерение
				timerDelayMs(800); // ждем минимум 750 мс, пока конвентируется температура
				unsigned char	data[2]; // переменная для хранения старшего и младшего байта данных
				DS18x20_ReadData(owDevicesIDs[i], data); // считываем данные
				unsigned char	themperature[3]; // в этот массив будет записана температура
				DS18x20_ConvertToThemperature(data, themperature); // преобразовываем температуру в человекопонятный вид
				printf(": %d.%d C", themperature[1],themperature[2]);
			} break;
			case OW_DS18S20_FAMILY_CODE: { // если найден термодатчик DS18B20
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Thermometer DS18S20"); // печатаем тип устройства 
			} break;

			case OW_DS1990_FAMILY_CODE: { // если найден электронный ключ DS1990
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Serial button DS1990"); // печатаем тип устройства 
			} break;
			case OW_DS2430_FAMILY_CODE: { // если найдена EEPROM
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - EEPROM DS2430"); // печатаем тип устройства 
			} break;
			case OW_DS2413_FAMILY_CODE: { // если найден ключ
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Switch 2413"); // печатаем тип устройства 
			} break;
			case OW_DS2405_FAMILY_CODE: { // если найден ключ
				printf("\r"); 
				print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Switch 2405"); // печатаем тип устройства 

				addSwitchIndex(i);
				DS24x05_Add(owDevicesIDs[i]);
			} break;
		}

	}

	commands_Reset();	
	sei();

	for(;;)
	{	
		toggleSwitches();
	}

}