Вы находитесь на странице: 1из 2

#include <18F4550.

h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48,000,000)
/////////////////////////////////////////////////////////////////////////////
//
// CCS Library dynamic defines. For dynamic configuration of the CCS Library
// for your application several defines need to be made. See the comments
// at usb.h for more information
//
/////////////////////////////////////////////////////////////////////////////
#define USB_HID_DEVICE
FALSE
//deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK
//turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK
//turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE
10
//size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE
10
//size to allocate for the rx endpoint 1 buffer
#define use_portb_kbd
TRUE
//Habilitamos la lectura del Teclado por el Puerto B
#include
#include
#include
#include
#include
#include

<pic18_usb.h>
<PicUSB.h>
<usb.c>
<lcd.c>
<kbd_lib.c>
<stdio.h>

//Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver


//Configuracin del USB y los descriptores para este dispositivo
//handles usb setup tokens and get descriptor reports

/////////////////////////////////////////////////////////////////////////////
//
// Al conectar el PicUSB al PC encendemos el Led Rojo hasta que el dispositivo
// haya sido configurado por el PC, en ese momento encenderemos el Led Verde.
// Esperaremos hasta que se reciba un paquete proveniente del PC. Comprobaremos
// el primer byte del paquete recibido para comprobar si queremos entrar en el
// modo Suma, donde se realizar una suma de dos operandos, que correspondern
// con los dos bytes restantes del paquete recibido; una vez realizada la suma
// enviaremos el paquete con el resultado de vuelta al PC. Si entramos en el
// modo Led comprobaremos el segundo byte del paquete recibido para comprobar
// si deberemos apagar los leds, encender el verde o el rojo.
//
/////////////////////////////////////////////////////////////////////////////
//#byte port_b=0x06
int periodo1=0, periodo2=0, cuenta_on=0, cuenta_off=0, i;
Voidmain (void) {
kbd_init();
port_b_pullups(TRUE);
SET_TRIS_B(0xFF);
SET_TRIS_C(0x0F);
//SETUP_ADC_PORTS(ADC_OFF | NO_ANALOGS);
char t_in=0,t_ap=0;
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc,"Practica 2:");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ventilador ");
output_high(PIN_E2);
//enciende el led al conectar el pic
usb_init();
//inicializamos el USB
usb_task();
//habilita periferico usb e interrupciones
usb_wait_for_enumeration();
//esperamos hasta que el PicUSB sea configurado por el host
output_low(PIN_E2);
// se apaga el led al existir comunicacin usb
delay_ms(300);
output_high(PIN_E2);
delay_ms(300);
output_low(PIN_E2);
delay_ms(300);
output_high(PIN_E2);
lcd_putc('\f');
lcd_gotoxy(1,1);
delay_ms(500);
while (TRUE)
{
if(input(PIN_E0)==1)
{
t_in = kbd_getc();
cuenta_on=t_in-48;
periodo1=cuenta_on;
if(t_in!=0)
{
lcd_gotoxy(1,1);
lcd_putc("Tiempo de inicio");
lcd_gotoxy(1,2);
printf(lcd_putc,"%u ",cuenta_on);
delay_ms(500);
lcd_putc('\f');
lcd_gotoxy(1,1);
delay_ms(1000);
}

}
if(input(PIN_E1)==1)
{
t_ap = kbd_getc();
cuenta_off=t_ap-48;
periodo2=cuenta_off;
if( t_ap !=0)
{
lcd_gotoxy(1,1);
lcd_putc("Tiempo off");
lcd_gotoxy(1,2);
printf(lcd_putc,"%u ",cuenta_off);
delay_ms(500);
lcd_putc('\f');
lcd_gotoxy(1,1);
delay_ms(500);
i=1;
}
}
if(i==1 && input(PIN_C6)==0)
{
if (cuenta_on!=0)
{
output_high(PIN_E2); //ventilador encendido
output_high(PIN_C1);
lcd_putc('\f');
lcd_gotoxy(1,1);
printf(lcd_putc,"Encendido:");
lcd_gotoxy(1,2);
printf(lcd_putc,"%u ",cuenta_on);
delay_ms(1000);
cuenta_on--;
if(cuenta_on==0)
cuenta_off=periodo2;
}
else
{
if (cuenta_off!=0 && input(PIN_C6)==0)
{
output_low(PIN_E2); //ventilador encendido
output_low(PIN_C1);
lcd_putc('\f');
lcd_gotoxy(1,1);
printf(lcd_putc,"Apagado:");
lcd_gotoxy(1,2);
printf(lcd_putc,"%u ",cuenta_off);
delay_ms(1000);
cuenta_off--;
if(cuenta_off==0)
cuenta_on=periodo1;
}
}
}
}//while(TRUE)
} //void

Вам также может понравиться