Пример #1
0
void main(void)
{
    _U08 key;

    System_EnablePLL(); /*Elevamos la frecuencia de operacion a 48MHz*/
    ANCON0 = 0XFF;      /*Desativamos las salidas analogicas*/
    ANCON1 = 0XFF;      /*Desativamos las salidas analogicas*/

    Timers_Init();                      /*inicializamos el driver para genere una interrupcion cada 5ms*/
    Timers_SetTime(0, 10/timers_ms);    /*recargamos el canal 0 con un valor de 10ms*/
    Keyboard_Init();                    /*Inicilizamos las entradas y salidas del teclado*/
    Gpios_WriteTris(GPIOS_PORTB, 0x00); /*puerto B como salida*/
    Gpios_WritePort(GPIOS_PORTB, 0x00); /*limpiamos el puerto*/
    Keyboard_SetDebounce(0, 50);        /*500ms de debouncea a la tecla 0*/
    Keyboard_SetDebounce(4, 50);        /*500ms de debounce a la tecla 4*/
    Keyboard_SetDebounce(8, 50);        /*500ms de debounce a la tecla 8*/
    Keyboard_SetDebounce(12, 50);       /*500ms de debounce a la tecla 12*/
    __ENABLE_INTERRUPTS();              /*se habilitan las interrupciones globales con prioridad*/

    while (1)
    {
        if(Timers_u16GetTime(0) == 0)   /*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/
        {
            Timers_SetTime(0, 10/timers_ms);/*se cumplen los 100ms asi que volvemos a recargar el mismo canal */
            Keyboard_Task();                /*poleamos poleamos el teclado matrizial*/
        }

        if(Keyboard_bIsPressed() == _TRUE)          /*preguntamos si se presiono alguna tecla*/
        {
            key = Keyboard_u8GetKey();              /*obtenemos cual tecla se presiono*/
            Gpios_WritePort(GPIOS_PORTB, key);     /*despliego el valor de la tecla en el puerto B*/
        }
    }
}
Пример #2
0
int main(void)
{
    ANCON0 = 0XFF;  /*Desactivamos las entradas analogicas*/
    ANCON1 = 0XFF;  /*Desactivamos las entradas analogicas*/

    System_EnablePLL();                                 /*uC a 48MHz*/
    HD44780_Init();                                     /*inicliza el LCD*/
    xdev_out(HD44780_WriteData);                        /*establece elcd como salida*/
    xprintf("Tengo %d edad", (_U16)29);                 /*imprime una cadena de caracteres*/
    HD44780_SetCursor(2, 0);                            /*se cambia el cursor a la linea 2 columna 5*/
    xprintf("Hoy es %d de %d", (_U16)30, (_U16)1984);   /*se imprime otra linea de caracteres*/
    while (1)
    {

    }
}
Пример #3
0
int main(void)
{

    ANCON0 = 0XFF;  /*Desactivamos las entradas analogicas*/
    ANCON1 = 0XFF;  /*Desactivamos las entradas analogicas*/

    System_EnablePLL();
    _6800_Init();
    /*secuencia para incilizar controlador*/
    Delays_ms((_U08)15);                /* 15 ms para que el controlador encienda */
    _6800_WriteCommand((_U08)0x30);	/* Secuecia de encendido en modo 8 bits */
    Delays_ms((_U08)5);
    _6800_WriteCommand((_U08)0x30);
    Delays_ms((_U08)2);
    _6800_WriteCommand((_U08)0x30);
    while(bBusyFlag());
    
    _6800_WriteCommand(0x20);           /*modo 4 bits y una linea activa*/
    while(bBusyFlag());
    
    _6800_WriteCommand(0x04);           /*Se apaga el controlador, nibble alto*/
    _6800_WriteCommand(0x04<<4);        /*nibble bajo*/
    while(bBusyFlag());
    
    _6800_WriteCommand((_U08)0x01);     /*se enciende y limpia el display, nibble alto*/
    _6800_WriteCommand((_U08)0x01<<4);  /*nibble bajo */
    Delays_ms((_U08)2);                 /*para el comando clear screen se debe esperar 1.52ms*/

    _6800_WriteCommand(0x06);           /*incremento de cursor a la derecha, nibble alto*/
    _6800_WriteCommand(0x06<<4);        /*nibble bajo */
    while(bBusyFlag());
    
    _6800_WriteCommand(0x0c);           /*se apaga el cursor y el parpadeo, nibble alto*/
    _6800_WriteCommand(0x0c<<4);        /*nibble bajo */
    while(bBusyFlag());
    
    _6800_WriteData('4');               /*Se imprime la letra 'e' en el lcd, nibble alto*/
    _6800_WriteData('4'<<4);            /*nibble bajo */
    /*a partir de este punto se pueden mandar caracteres al lcd, solo se requiere
     esperar 40us entre cada caracter o comando*/

    while (1)
    {

    }
}
Пример #4
0
int main(void)
{
    System_EnablePLL(); /*micro a 48MHz, esto es obligatorio para el USB*/
    UsbCDC_Init(9600);  /*inicia emulacion serial a 9600 baudios*/
    Gpios_PinDirection(GPIOS_PORTA, 1, GPIOS_OUTPUT);/*pin RA1 como salida*/
    
    while(1)
    {
        if(UsbCDC_bEnumerated() == _TRUE) /*usb enumarado*/
        {
            i = UsbCDC_u8RxData( &buffer[0], 1 );/*recivimos datos por usb serial*/
            if((i > 0) && (buffer[0] == 't'))/*si se recivio un dato y este es la letra t*/
            {
                Gpios_TogglePin(GPIOS_PORTA, 1);/*invierto estado del led*/
            }
        }
    }
}
Пример #5
0
void main(void)
{
    System_EnablePLL();                 /*Elevamos la frecuencia de operacion a 48MHz*/
    ANCON0 = 0XFF;                      /*Desativamos las salidas analogicas*/
    ANCON1 = 0XFF;                      /*Desativamos las salidas analogicas*/

    Timers_Init();                      /*inicializamos el driver para genere una interrupcion cada 5ms*/
    Timers_SetTime(0, 10/timers_ms);    /*recargamos el canal 0 con un valor de 10ms*/
    Gpos_Init();                        /*Inicilizamos las salidas donde estan los leds*/
    Gpos_SetMode(0, GPOS_OSC_MODE, 20); /*oscilar salida 0 cada 200ms*/
    Gpos_SetMode(1, GPOS_OSC_MODE, 30); /*oscilar salida 1 cada 300ms*/
    Gpos_SetMode(2, GPOS_OSC_MODE, 50); /*oscilar salida 2 cada 500ms*/

    __ENABLE_INTERRUPTS();   /*se habilitan las interrupciones globales con prioridad*/

    while (1)
    {
        if(Timers_u16GetTime(0) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/
        {
            Timers_SetTime(0, 10/timers_ms);/*se cumplen los 10ms asi que volvemos a recargar el mismo canal */
            Gpos_Task();                    /*actualizamos las salidas, en este caso RA1*/
        }
    }
}