Пример #1
0
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);
}
Пример #3
0
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;
}