uint8_t LeerTeclas(void) { uint8_t teclas = 0; teclas = LeerTecla(TECLA1); teclas |= (LeerTecla(TECLA2) << 1); teclas |= (LeerTecla(TECLA3) << 2); teclas |= (LeerTecla(TECLA4) << 3); return teclas; }
int main(void) { uint8_t tecla; uint32_t retardo; contador_periodo=0; periodo_calibracion=10;//100ms ganancia=1;// amplitud_max=775;//2.5V amplitud_min=465;//1.5V contador=0; amplitud=amplitud_max-amplitud_min;//775-465=310 mitad_periodo=periodo_calibracion/2; offset=amplitud_max-amplitud; //Generacion de señal cuadrada /// //paso=(float)(amplitud_max/periodo); InicializarTimer (); Periodo(INTERVALO); InicializarLed (); HabilitaInterrupcion(); //InicializarTecla (); InicializarDAC (); InicializarADC (); InicializarUSART(); for(;;){ tecla=LeerTecla(); //amplitud=amplitud_max-amplitud_min; switch(tecla) { case TECLA1:/*aumenta la ganancia 1.1, su equivalente adc 341*/ ganancia=ganancia*1.1; amplitud_max=amplitud_max*ganancia; amplitud_min=amplitud_min*ganancia; amplitud=amplitud_max-amplitud_min; offset=amplitud_max-amplitud; contador=0; break; case TECLA2:/* atenuo la señal 0.8 */ ganancia=ganancia*0.8; amplitud_max=amplitud_max*ganancia; amplitud_min=amplitud_min*ganancia; amplitud=amplitud_max-amplitud_min; offset=amplitud_max-amplitud; contador=0; break; case TECLA3:/*aumento el offset 100mv*/ //31 es el equivalente a 0.1V=100mV if (amplitud_max<TOPE_MAX) { amplitud_max=amplitud_max+31; amplitud_min=amplitud_min+31; amplitud=amplitud_max-amplitud_min; offset=offset+31; contador=0; } break; case TECLA4:/*disminuyo offset 100mv=0.1v*/ //31 es el equivalente a 0.1V=100mV if (amplitud_min>TOPE_MIN)//equivalente a 0.2V { amplitud_max=amplitud_max-31; amplitud_min=amplitud_min-31; amplitud=amplitud_max-amplitud_min; offset=offset-31; contador=0; } break; } if (tecla!=0){ //para el antirebote //retardo for(retardo=0;retardo<10000000;retardo++); /*ApagarTodos();*/ } } while (TRUE); }
int main(void) { uint8_t LedSelecionado = 1; int8_t Periodo = 0; /* perform the needed initialization here */ InicializarLeds(); InicializarTeclas(); InicializarTimer(250); while(1){ /* Consigna 3.1 b) */ if(LeerTecla(TECLA1)){ delayNoelegante(MAXDELAY); LedSelecionado--; if(LedSelecionado == 0) LedSelecionado = 4; } if(LeerTecla(TECLA2)){ delayNoelegante(MAXDELAY); LedSelecionado ++; if(LedSelecionado == 5) LedSelecionado = 1; } if(LeerTecla(TECLA3)){ delayNoelegante(MAXDELAY); Periodo -=2; if(Periodo == -200) Periodo = -200; // SAturacion de seguridad InicializarTimer(250 + Periodo); } if(LeerTecla(TECLA4)){ delayNoelegante(MAXDELAY); Periodo +=2; if(Periodo == 200) Periodo = 200; // SAturacion de seguridad InicializarTimer(250 + Periodo); } if (FlagCounter == 1){ FlagCounter =0; switch(LedSelecionado){ case 1: ToogleLed(LED0R); ApagaLed(LED1); ApagaLed(LED2); ApagaLed(LED3); ApagaLed(LED0G); break; case 2: ToogleLed(LED1); ApagaLed(LED0R); ApagaLed(LED2); ApagaLed(LED3); ApagaLed(LED0G); break; case 3: ToogleLed(LED2); ApagaLed(LED1); ApagaLed(LED0R); ApagaLed(LED3); ApagaLed(LED0G); break; case 4: ToogleLed(LED3); ApagaLed(LED1); ApagaLed(LED2); ApagaLed(LED0R); ApagaLed(LED0G); break; default: ApagaLed(LED1); ApagaLed(LED2); ApagaLed(LED3); ApagaLed(LED0R); break; } } } return 0; }