void main(void) { _U08 u8Adc = 0; _U08 u8Val; _U16 u16Volts; ANCON0 = 0xff; ANCON1 = 0xff; Adc_Init(ADC_8BITS); Timers_Init(); /*inicializamos el driver para genere una interrupcion cada 5ms*/ _7segments_Init(); /*configuramos los pines como salidas*/ __ENABLE_INTERRUPTS(); /*se habilitan las interrupciones globales con prioridad*/ while (1) { if(Timers_u16GetTime(0) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/ { Timers_SetTime(0, 5/timers_ms);/*se cumplen los 5ms asi que volvemos a recargar el mismo canal */ _7segments_Task(); /*actualiza el valor en el display y multiplexa al siguiente display*/ } if(Timers_u16GetTime(1) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 1*/ { Timers_SetTime(1, 100/timers_ms); /*se cumplen los 200ms asi que volvemos a recargar el mismo canal */ u8Adc = Adc_u16Read( 3 ); /*se lee el canal del adc*/ u16Volts = (_U16)u8Adc * (_U16)13; /*se trasnforma la lectura en milivolts*/ _7segments_SetNumber(u16Volts/10); /*actualizamos el display con el valor en volts*/ u8Val = _7segments_u8GetDisplay(2); /*se lee el tercer display*/ _7segments_SetDisplay(2, u8Val|0x80); /*se agrega el punto decimal*/ } } }
void main(void) { _U08 key; System_EnablePLL(); /*Elevamos la frecuencia de operacion a 48MHz*/ ANCON0 = 0XFF; /*Desativamos las salidas analogicas*/ ANCON1 = 0XFF; /*Desativamos las salidas analogicas*/ Timers_Init(); /*inicializamos el driver para genere una interrupcion cada 5ms*/ Timers_SetTime(0, 10/timers_ms); /*recargamos el canal 0 con un valor de 10ms*/ Keyboard_Init(); /*Inicilizamos las entradas y salidas del teclado*/ Gpios_WriteTris(GPIOS_PORTB, 0x00); /*puerto B como salida*/ Gpios_WritePort(GPIOS_PORTB, 0x00); /*limpiamos el puerto*/ Keyboard_SetDebounce(0, 50); /*500ms de debouncea a la tecla 0*/ Keyboard_SetDebounce(4, 50); /*500ms de debounce a la tecla 4*/ Keyboard_SetDebounce(8, 50); /*500ms de debounce a la tecla 8*/ Keyboard_SetDebounce(12, 50); /*500ms de debounce a la tecla 12*/ __ENABLE_INTERRUPTS(); /*se habilitan las interrupciones globales con prioridad*/ while (1) { if(Timers_u16GetTime(0) == 0) /*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/ { Timers_SetTime(0, 10/timers_ms);/*se cumplen los 100ms asi que volvemos a recargar el mismo canal */ Keyboard_Task(); /*poleamos poleamos el teclado matrizial*/ } if(Keyboard_bIsPressed() == _TRUE) /*preguntamos si se presiono alguna tecla*/ { key = Keyboard_u8GetKey(); /*obtenemos cual tecla se presiono*/ Gpios_WritePort(GPIOS_PORTB, key); /*despliego el valor de la tecla en el puerto B*/ } } }
int main(void) { ANCON0 = 0XFF; /*Desativamos las salidas analogicas*/ ANCON1 = 0XFF; /*Desativamos las salidas analogicas*/ Timers_Init(); /*inicializamos el driver para genere una interrupcion cada 5ms*/ Timers_SetTime(0, 100/timers_ms); /*recargamos el canal 0 con un valor de 100ms*/ Timers_SetTime(1, 200/timers_ms); /*recargamos el canal 1 con un valor de 200ms*/ Timers_SetTime(2, 500/timers_ms); /*recargamos el canal 2 con un valor de 500ms*/ Gpios_PinDirection(GPIOS_PORTB, 7, GPIOS_OUTPUT); /*puerto RB7 como salida*/ Gpios_PinDirection(GPIOS_PORTB, 6, GPIOS_OUTPUT); /*puerto RB6 como salida*/ Gpios_PinDirection(GPIOS_PORTB, 5, GPIOS_OUTPUT); /*puerto RB5 como salida*/ __ENABLE_INTERRUPTS(); /*se habilitan las interrupciones globales con prioridad*/ while (1) { /*parpadeamos el primer led (Puerto B, Pin 7)*/ if(Timers_u16GetTime(0) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/ { Timers_SetTime(0, 100/timers_ms);/*se cumplen los 100ms asi que volvemos a recargar el mismo canal */ Gpios_TogglePin(GPIOS_PORTB, 7); /*invierto el estado del led conectado al puerto B pin 7*/ } /*parpadeamos el segundo led (Puerto B, Pin 6)*/ if(Timers_u16GetTime(1) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 1*/ { Timers_SetTime(1, 200/timers_ms);/*se cumplen los 200ms asi que volvemos a recargar el mismo canal */ Gpios_TogglePin(GPIOS_PORTB, 6); /*invierto el estado del led conectado al puerto B pin 6*/ } /*parpadeamos el primer led (Puerto B, Pin 5)*/ if(Timers_u16GetTime(2) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 2*/ { Timers_SetTime(2, 500/timers_ms);/*se cumplen los 500ms asi que volvemos a recargar el mismo canal */ Gpios_TogglePin(GPIOS_PORTB, 5); /*invierto el estado del led conectado al puerto B pin 5*/ } } }
void main(void) { System_EnablePLL(); /*Elevamos la frecuencia de operacion a 48MHz*/ ANCON0 = 0XFF; /*Desativamos las salidas analogicas*/ ANCON1 = 0XFF; /*Desativamos las salidas analogicas*/ Timers_Init(); /*inicializamos el driver para genere una interrupcion cada 5ms*/ Timers_SetTime(0, 10/timers_ms); /*recargamos el canal 0 con un valor de 10ms*/ Gpos_Init(); /*Inicilizamos las salidas donde estan los leds*/ Gpos_SetMode(0, GPOS_OSC_MODE, 20); /*oscilar salida 0 cada 200ms*/ Gpos_SetMode(1, GPOS_OSC_MODE, 30); /*oscilar salida 1 cada 300ms*/ Gpos_SetMode(2, GPOS_OSC_MODE, 50); /*oscilar salida 2 cada 500ms*/ __ENABLE_INTERRUPTS(); /*se habilitan las interrupciones globales con prioridad*/ while (1) { if(Timers_u16GetTime(0) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/ { Timers_SetTime(0, 10/timers_ms);/*se cumplen los 10ms asi que volvemos a recargar el mismo canal */ Gpos_Task(); /*actualizamos las salidas, en este caso RA1*/ } } }
/*******************************************************************************//** * @implements InitComponents **********************************************************************************/ RESULT InitComponents(void) { // init guard if(Guard_Init()==FAIL) return FAIL; // init utils if(Utils_Init()==FAIL) return FAIL; // init MCU if(MCU_Init()==FAIL) return FAIL; // init scheduler if(Scheduler_Init()==FAIL) return FAIL; // init power management system #ifdef USE_PWR if(PWR_Init()==FAIL) return FAIL; #endif // init timers #ifdef USE_TIMERS if(Timers_Init()==FAIL) return FAIL; #endif // init LEDs #ifdef USE_LEDS if(LEDs_Init()==FAIL) return FAIL; #endif // init buttons #ifdef USE_BUTTONS if(Buttons_Init()==FAIL) return FAIL; #endif // init UART #ifdef USE_UART if(UART_Init()==FAIL) return FAIL; #endif // init SPI #ifdef USE_SPI if(SPI_Init()==FAIL) return FAIL; #endif // init TWI #ifdef USE_TWI if(TWI_Init()==FAIL) return FAIL; #endif // init OWI #ifdef USE_OWI if(OWI_Init()==FAIL) return FAIL; #endif // init other components if(InitOther()==FAIL) return FAIL; // init sensors #ifdef USE_SENSORS if(Sensors_Init()==FAIL) return FAIL; #endif // init NWK #ifdef USE_NWK if(NWKLayer_Init()==FAIL) return FAIL; #endif // return success return SUCCESS; }