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; } } } }
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); }