コード例 #1
0
ファイル: cuenta.c プロジェクト: moenippus/AVR
void main(void)
{
	uart_init();
	PORTD = _BV(PD2); /* resistor de pull-up */
	MCUCR = _BV(ISC01); /* int0 por flanco H->L */
	GICR = _BV(INT0); /* int0 habilitada */
	TIMSK = _BV(OCIE1A); /* interrupion por comparacion */
	TCCR1B = _BV(WGM12); /* modo de borrado del timer cuando cuando la comparacion coincide */
	OCR1A = 124; /* cuento 125 ints de timer 1MHz / 8 = 125000 da un margen de 1000 overflows */
	sei();
	while(1) {
		switch(menu()) {
			case 'c':
				configuracion();
			case 'r':
				TCCR1B &= ~(_BV(CS11)); /* detiene el timer */
				TCNT1 = 0; /* timer a cero */
				for (i = 0; i < MAX_MEDICIONES; i++)
					valores[i] = 0;
				i = 0;
				x = 0;
				break;
			case 'v':
				volcar();
				break;
			default:
				printf("\n ERROR: opcion invalida\n");
		}
	}
}
コード例 #2
0
ファイル: progra1.c プロジェクト: vero19/Lenguajes_progra1
/*Funcion *conf
asigna una accion del hilo que ejecuta el programa
El programa se mantiene oyendo el puerto para detectar un mensaje entrante*/
void *conf(void *var) {
    int salir = 0;
    while(salir ==0)
        configuracion();
}
コード例 #3
0
void interrupt()
{
     if(PIR1.RCIF)
     {
            if(RCREG>47&&RCREG<58)
            {
                contador++;
                switch(contador)
                {
                case 1:
                d1=RCREG-48;
                break;

                case 2:
                d2=RCREG-48;
                break;

                case 3:
                d3=RCREG-48;
                break;

                }
                Numero=((d1*100)+(d2*10)+d3);
            IntToStr(Numero, TEXTO2);
            configuracion();
            RESET_LCD();
            CONFIG_SET();
            ENABLE();
            DISPLAY_ON_OFF();
            ENABLE();
            CLEAR_DISPLAY();
            ENABLE();
            ENTRY_MODE_SET();
            ENABLE();
            CADENA1();                                           //Cadena de Texto 1era Linea
            SET_DDRAM();
            ENABLE();
            CADENA2();                                           //Cadena de Texto 2da Linea
            }

            if(RCREG>96&&RCREG<108)
            {
                  Boton=RCREG;
                  switch(Boton)
                  {
                      case 97:
                           Motor=5;
                      break;
                      
                      case 98:
                           Motor=4;
                      break;
                      
                      case 99:
                           Motor=3;
                      break;

                      case 100:
                           Motor=1;
                      break;
                      
                      case 101:
                           Motor=0;
                      break;
                      
                      case 102:
                           PORTB=0x00;
                           PORTB.RB2=1;
                           PWM_CFG();
                           Periodo(256);
                           Valor=(Numero*2.5)+200;
                           Ancho_Pulso(Valor);
                      break;
                      
                      case 103:
                           d1=0;
                           d2=0;
                           d3=0;
                           contador=0;
                      break;
                      
                      case 104:
                           PORTB=0x00;
                           switch(Motor)
                           {
                                  case 0:
                                       PORTB.RB0=1;
                                  break;
                                  
                                  case 1:
                                       PORTB.RB1=1;
                                  break;
                                  
                                  case 3:
                                       PORTB.RB3=1;
                                  break;
                                  
                                  case 4:
                                       PORTB.RB4=1;
                                  break;
                                  
                                  case 5:
                                       PORTB.RB5=1;
                                  break;
                           }
                            if(Motor>0)
                           {
                                  Numero=72;
                           }
                           if(Motor==0)
                           {
                                  Numero=105;
                           }
                           PWM_CFG();
                           Periodo(256);
                           Valor=(Numero*2.5)+200;
                           Ancho_Pulso(Valor);
                      break;
                      
                      case 105:
                           PORTB=0x00;
                           switch(Motor)
                           {
                                  case 0:
                                       PORTB.RB0=1;
                                  break;

                                  case 1:
                                       PORTB.RB1=1;
                                  break;

                                  case 3:
                                       PORTB.RB3=1;
                                  break;

                                  case 4:
                                       PORTB.RB4=1;
                                  break;

                                  case 5:
                                       PORTB.RB5=1;
                                  break;
                           }
                           if(Motor>0)
                           {
                                  Numero=68;
                           }
                           if(Motor==0)
                           {
                                  Numero=45;
                           }
                           PWM_CFG();
                           Periodo(256);
                           Valor=(Numero*2.5)+200;
                           Ancho_Pulso(Valor);
                      break;
                      
                      case 106:
                           PORTB=0x00;
                      break;
                  }
            }
     }
}