char readbuff[64];
char writebuff[64];
char aux[64],txt[64],aux1[64];
char menu[]="menu";
char menu1[]="1";
char menu2[]="2";
char menu4[]="4";
char menu3[]="3";
char menu5[]="salir";
char v1[]="1";
char v9[]="9";
char v2[]="2";
char v10[]="10";
char v3[]="3";
char v11[]="11";
char v4[]="4";
char v12[]="12";
char v5[]="5";
char v13[]="13";
char v6[]="6";
char v14[]="14";
char v7[]="7";
char v15[]="15";
char v8[]="8";
char v16[]="16";
int cnt=0, FUNCION =0, VOLTAJE=0;
void InitMCU()
{
ANSELC=0x0000; //Configuracionde E/S digitales
ANSELD=0x0000; //Configuracionde E/S digitales
ANSELE=0x0040; //RE6 como entrada analogica
ANSELB=0x0000; //Configuracionde E/S digitales
//CONFIGURACION DEL PLL PARA ALCANZAR UNA VELOCIDAD DE 30MHZ
PLLFBD = 58; //M = 60
CLKDIVbits.PLLPOST= 0; // N1 = 2
CLKDIVbits.PLLPRE= 0; // N2 = 2
OSCTUN = 0;
OSCCON=0x0301;
while(OSCCONbits.COSC!= 0x3);
//CONFIGURACION DEL PLL AUXILIAR PARA EL USB
//SE REQUIEREN 48MHZ
ACLKCON3 = 0x24C0;
ACLKDIV3 = 0x7;
ACLKCON3bits.ENAPLL = 1;
///// CONFIGURACION COMPARADOR ANALOGICOOOOOOOOO
CM1CON= 0X1001;
CM2CON= 0X1001;
CM1CONbits.CCH=00;
CM2CONbits.CCH=00;
ANSELBbits.ANSB5=1; //C1IN1+
ANSELBbits.ANSB4=1; //C1IN2-
ANSELBbits.ANSB3=1; //C2IN1+
ANSELBbits.ANSB2=1; //C2IN2-
CM1CONbits.CON=1;
CM2CONbits.CON=1;
CVRCONBITS.CVRSS=0; //VOLTAJE DE REFERENCIA CONFIGURACION
CVRCONBITS.CVRR=0;
CVRCONBITS.CVROE=1;
CVRCONBITS.CVREN=0;
CVRCONBITS.BGSEL=11;
CVRCONBITS.VREFSEL=0;
ANSELBBITS.ANSB10=1;
//FIN CONFIGURACION ANALOGICAAAAA
while(ACLKCON3bits.APLLCK != 1);
}
void fin_de_linea()
{ strcpy(writebuff," ");
writebuff[0]=13; //CR
writebuff[1]=10; //LF
writebuff[2]='\0';
while(!HID_Write(&writebuff,64));
}
void enviar_texto(char enviar[64])
{ strcpy(writebuff,enviar);
while(!HID_Write(&writebuff,64));
fin_de_linea();}
void enviar_texto2(char enviar[64]){
strcpy(writebuff,enviar);
while(!HID_Write(&writebuff,64));}
void USB1Interrupt() iv IVT_ADDR_USB1INTERRUPT
{
USB_Interrupt_Proc();
}
void main(void)
{
InitMCU();
HID_Enable(&readbuff,&writebuff); //inicializamos en m�dulo usbhid
Delay_ms(2000);
Delay_ms(2000);
Delay_ms(2000);
Delay_ms(2000);
Delay_ms(2000);
Delay_ms(2000);
Delay_ms(2000);
while(1)
{
switch(FUNCION)
{
case 0:
VOLTAJE=0;
CVRCONBITS.CVREN=0;
CVRCONBITS.CVROE=0;
enviar_texto(" ");
enviar_texto(">>>>>>>>>>> MENU DE PRINCIPAL <<<<<<<<<<<<<<<<");
enviar_texto(" [1] CONTROL DE VELOCIDAD DE MOTORES,VOLT.REST. ");
enviar_texto(" [2] MODULO DE CUADRATURA ");
enviar_texto(" [3] COMPARADORES ANOLOGICOS Y ALARMA ");
enviar_texto(" [4] GENERADOR DE VOLTAJE ");
enviar_texto(" SALIR ");
enviar_texto(">>>>>>>>>>>>>>>>>------------<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" ");
while(!HID_Read())
for(cnt=0;cnt<64;cnt++){aux[cnt]=writebuff[cnt]=readbuff[cnt];}
if(!strcmp(aux,menu1))
{
FUNCION=1;
}
if(!strcmp(aux,menu2))
{
FUNCION=2;
}
if(!strcmp(aux,menu3))
{
FUNCION=3;
}
if(!strcmp(aux,menu4))
{
FUNCION=4;
}
if(!strcmp(aux,menu5))
{
FUNCION=0;
}
break;
case 1:
while(!HID_Read())
{
enviar_texto(" opcion 1");
Delay_ms(1000);
}
for(cnt=0;cnt<64;cnt++){aux[cnt]=writebuff[cnt]=readbuff[cnt];}
if(!strcmp(aux,menu5))
{
FUNCION=0;
}
break;
case 2:
while(!HID_Read())
{
enviar_texto(" opcion 2");
Delay_ms(1000);
}
for(cnt=0;cnt<64;cnt++){aux[cnt]=writebuff[cnt]=readbuff[cnt];}
if(!strcmp(aux,menu5))
{
FUNCION=0;
}
break;
case 3:
Delay_ms(2000);
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" Iniciando Modulo ");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
Delay_ms(2000);
Delay_ms(2000);
Delay_ms(2000);
while(!HID_Read())
{
if(CMSTATbits.C1OUT==0)
{
Delay_ms(100);
enviar_texto(">>>>>>>>>>> OPCION 3 <<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" ALERTA MAYOR DE 3 volts ");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
Delay_ms(1000);
}
if(CMSTATbits.C2OUT==0 && CMSTATbits.C1OUT==1)
{
Delay_ms(100);
enviar_texto(">>>>>>>>>>> OPCION 3 <<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" Voltaje Normal ");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
Delay_ms(1000);
}
if(CMSTATbits.C2OUT==1)
{
Delay_ms(100);
enviar_texto(">>>>>>>>>>> OPCION 3 <<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" ALERTA MENOR DE 2.5 volts ");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
Delay_ms(1000);
}
}
for(cnt=0;cnt<64;cnt++){aux[cnt]=writebuff[cnt]=readbuff[cnt];}
if(!strcmp(aux,menu5))
{
FUNCION=0;
}
break;
case 4:
CVRCONBITS.CVROE=1;
CVRCONBITS.CVREN=1;
Delay_ms(2000);
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" Iniciando Modulo ");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
Delay_ms(2000);
switch(VOLTAJE)
{
case 0:
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
enviar_texto(" SELECCIONE UN OPCION DE VOLTEJA ");
enviar_texto(" OPCIONES: ");
enviar_texto(">>>>>>>>> v1 HASTA V16 <<<<<<<<<<<<");
enviar_texto(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<");
while(!HID_Read())
for(cnt=0;cnt<64;cnt++){aux1[cnt]=writebuff[cnt]=readbuff[cnt];}
if(!strcmp(aux1,v1))
{
VOLTAJE=1;
}
if(!strcmp(aux1,v2))
{
VOLTAJE=2;
}
if(!strcmp(aux1,v3))
{
VOLTAJE=3;
}
if(!strcmp(aux1,v4))
{
VOLTAJE=4;
}
if(!strcmp(aux1,v5))
{
VOLTAJE=5;
}
if(!strcmp(aux1,v6))
{
VOLTAJE=6;
}
if(!strcmp(aux1,v7))
{
VOLTAJE=7;
}
if(!strcmp(aux1,v8))
评论0