Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
//*************************************************************************
// PicUSB.c
// Realizado con el compilador CCS por Andrés Felipe Gómez Rendón
// *************************************************************************
#include <18F4550.h>
#fuses HSPLL, //CRISTAL DE ALTA VELOCIDAD
#fuses NOWDT, //NO TRABAJAR CON EL PERRO GUARDIAN.
#fuses PROTECT, //PROTEGER EL CODIGO DE LECTURAS
#fuses EBTR, //PROTEGER LA MEMORIA DE LECTURAS
#fuses CPD, //PROTEGER LA EEPROM DE LECTURAS
#fuses CPB, //PROTEGE EL CODIGO DE BITS DE LECTURAS
#fuses EBTRB, //PROTEGE LA TABLA DE LECTURAS
#fuses NOLVP, //NO PERMITE LA PROGRAMACION A BAJO VOLTAGE
#fuses NODEBUG, //LO PROTEGE DE LECTURAS
#fuses USBDIV, //EL RELOJ DEL PLL DE USB SE DIVIDE X 2
#fuses PLL5, //DIVIDE POR 5 EL OCSILADOR DE 20MHZ
#fuses CPUDIV1, //NO DIVIDA EL RELOJ
#fuses VREGEN, //REGULADOR DE VOLTAJE USB ACTIVO
#fuses MCLR, //EL PIN DE MASTER CLEAR ESTA ACTIVO.
#fuses LPT1OSC, //EL OXILADOR CONSUME MAS ENERGIA PERO ES MAS ESTABLE AL RUIDO.
#fuses FCMEN, //MONITOREA EL OXILADOR Y SI DETECTA UNA FALLA PASA A RELOJ INTERNO..
#use delay(clock= 20000000) // Cristal de 20MHz
// =========================================================================
// Definiciones para la librería dinámica CCS. Para la configuración dinámica
// hay que definir algunos valores. Están explicados en usb.h
// =========================================================================
#define USB_HID_DEVICE FALSE // Deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // Activa EP1(EndPoint1) para las transferencias IN Bulk/Interrupt
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // Activa EP1(EndPoint1) para las transferencias OUT Bulk/Interrupt
#define USB_EP1_TX_SIZE 4 // Tamaño reservado para el Buffer Tx EndPoint1
#define USB_EP1_RX_SIZE 3 // Tamaño reservado para el Buffer Rx EndPoint1
#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware para el CCS PIC USB Driver
#include <PicUSB.h> // Configuración del USB y los descriptores para este dispositivo
#include <usb.c> // Handles usb ,tokens y descriptores
// =========================================================================
[/COLOR]
[COLOR=#505050]// =========================================================================
#define LED7 PIN_B7 // PORTE.2 OUT DISPLAYS_1 DIS_4 RE7(40)
#define LED6 PIN_B6 // PORTE.2 OUT DISPLAYS_1 DIS_3 RE6(39)
#define LED5 PIN_B5 // PORTB.7 OUT DISPLAYS_1 DIS_2 RB5(48)
#define LED4 PIN_B4 // PORTB.6 OUT DISPLAYS_1 DIS_1 RB4(37)
#define LED3 PIN_B3 // PORTB.5 OUT DISPLAYS_1 BIT_3 RB3(36)
#define LED2 PIN_B2 // PORTB.4 OUT DISPLAYS_1 BIT_2 RB2(35)
#define LED1 PIN_B1 // PORTB.3 OUT DISPLAYS_1 BIT_1 RB1(34)
#define LED0 PIN_B0 // PORTB.2 OUT DISPLAYS_1 BIT_0 RB0(33)
#define LED_ON output_high // Salida en alto
#define LED_OFF output_low // Salida en bajo
#define modo recibe[0] // Byte que indica el modo de operación
#define param1 recibe[1] // Primer parámetro recibdo
#define param2 recibe[2] // Segundo parámetro recibdo
#define entrada_0 envia[0] // Byte a envíar en las entradas
#define entrada_1 envia[1] // Byte a envíar en las entradas
#define entrada_2 envia[2] // Byte a envíar en las entradas
#define entrada_3 envia[3] // Byte a envíar en las entradas
#define APAGA_LED 0
#define ENCIENDE_LED 1
void main(void) // Función Principal
{
int8 recibe[3]; // Declaramos la variable recibe de 3 bytes
int8 envia[4]; // Declaramos la variable envía de 4 bytes
set_tris_B(0B11111111); // Nibble bajo entradas, el alto salidas
usb_init(); // Inicializamos el USB
usb_task(); // Habilita el periferico usb y las interrupciones
usb_wait_for_enumeration(); // Esperamos hasta que el PicUSB sea configurado por el PC
if(usb_enumerated()) // Si el PicUSB está configurado
while (TRUE) // Se cumple siempre (Bucle infinito)
{
if(usb_enumerated()) // Si el PicUSB está configurado
{
if (usb_kbhit(1)) // Si el EndPoint de salida contiene datos del PC
{
usb_get_packet(1, recibe, 3); // Cojemos el paquete de tamaño 3 bytes del EP1
// y lo almacenamos en la variable recibe
if (modo==ENCIENDE_LED) // Modo Encender Leds
{
if (param1==1) {LED_ON(LED0);} // Encendemos led 0
if (param1==2) {LED_ON(LED1);} // Encendemos led 1
if (param1==3) {LED_ON(LED2);} // Encendemos led 2
if (param1==4) {LED_ON(LED3);} // Encendemos led 3
if (param1==5) {LED_ON(LED4);} // Encendemos led 4
if (param1==6) {LED_ON(LED5);} // Encendemos led 5
if (param1==7) {LED_ON(LED6);} // Encendemos led 6
if (param1==8) {LED_ON(LED7);} // Encendemos led 7
}
if (modo==APAGA_LED) // Modo Apagar Leds
{
if (param1==1) {LED_OFF(LED0);} // Apagamos led 0
if (param1==2) {LED_OFF(LED1);} // Apagamos led 1
if (param1==3) {LED_OFF(LED2);} // Apagamos led 2
if (param1==4) {LED_OFF(LED3);} // Apagamos led 3
if (param1==5) {LED_OFF(LED4);} // Apagamos led 4
if (param1==6) {LED_OFF(LED5);} // Apagamos led 5
if (param1==7) {LED_OFF(LED6);} // Apagamos led 6
if (param1==8) {LED_OFF(LED7);} // Apagamos led 7
}
}
}
}
}