Exemplo n.º 1
0
/*******************************************************************************
*  ??????                                                                *
*******************************************************************************/
void main()
{
     OSCCON     = 0b01110010 ;   // ???????8??????
     OPTION_REG = 0b00000000 ;   // ????I/O???????????????
     ANSELA     = 0b00000000 ;   // ??????????????????I/O??????
     TRISA      = 0b00000110 ;   // ???RA1(SCL)/RA2(SDA)????(RA3?????)
     WPUA       = 0b00000000 ;   // RA1/RA2???????????????
     PORTA      = 0b00000000 ;   // ????????(??LOW???)

     RA4 = 0;
     __delay_ms(500);
     RA4 = 1;
     __delay_ms(500);

     int i = 0;
     // ?????????(????100KHz)
     InitI2C_Master(1) ;

     // ??????????????
     // ICON OFF,??????(0-63),VDD=3.3V???,LCD?8???
     LCD_Init(LCD_NOT_ICON,32,LCD_VDD3V,8) ;

     while(1)
     {
         if(RA4 == 0)
             i++;
         LCD_SetCursor(0,0) ;        // ?????????
         LCD_Puts("-JP7FKF-") ;
         LCD_SetCursor(0,1) ;        // ?????????
         LCD_Putc(i+0x30) ;
     }
}
Exemplo n.º 2
0
void main(void){
    TRISDbits.TRISD3 = 0;
    TRISDbits.TRISD4 = 0;
    //timer
    configTimer();
    
    //ad
    configADInterrupt();
    configAD();
    
    //usart
    configRS232();
    configUSARTInterrupts();    
    
    //I2C
    InitI2C_Master();
    
    //interrupts    
    selectChanel(channel);
    
    for(int i = 0; i < 100; i++)
        __delay_ms(10);
    PORTDbits.RD4 = 0;
    for(int i = 0; i < 100; i++)
        __delay_ms(10);
    PORTDbits.RD4 = 1;
    for(int i = 0; i < 100; i++)
        __delay_ms(10);
    PORTDbits.RD4 = 0;
    for(int i = 0; i < 100; i++)
        __delay_ms(10);
    PORTDbits.RD4 = 1;
    for(int i = 0; i < 100; i++)
        __delay_ms(10);
    PORTDbits.RD4 = 0;
    
    srand(TMR0);
    //generate secret number between maxCont and minCont
    contTimer0 = (rand() % (maxCont + minCont)) + minCont;
    
    write_RTC_I2c();
    while (1){

        if(contLedRD4 == TIMER0_INTERRUPTS_PER_SECOND){
            val++;
            if(val == contTimer0){
                ADCON0bits.GO_DONE = 1;
                //Leitura de Posição de data no DS-1307.
                read_RTC_I2c(0x04);
                dia = leitura;            
                __delay_ms(10);

                //Leitura de Posição de mês no DS-1307.
                read_RTC_I2c(0x05);
                mes = leitura;            
                __delay_ms(10);

                //Leitura de Posição de ano no DS-1307.
                read_RTC_I2c(0x06);
                ano = leitura;            
                __delay_ms(10);

                //Leitura de Posição da Hora no DS-1307.
                read_RTC_I2c(0x02);
                hora = leitura;            
                __delay_ms(10);

                //Leitura de Posição de Minuto no DS-1307.
                read_RTC_I2c(0x01);
                minuto = leitura;
                __delay_ms(10);

                //Leitura de Posição de Segundo no DS-1307.
                read_RTC_I2c(0x00);
                segundo = leitura;


                //"id&valor&ano-mes-dia hora:minuto:segundo"
                printf("%u&%u&20%02X-%02X-%02X %02X:%02X:%02X", id, data_ADC, ano, mes, dia, hora, minuto, segundo);

                __delay_ms(10);
                //TODO tirar daqui
                printf("\n");
                
                val = 0;
                contTimer0 = (rand() % (maxCont + minCont)) + minCont;
            }
            led1 = changing;
            contLedRD4 = 0;
        }
    }
}
Exemplo n.º 3
0
void main(void){
    TRISDbits.TRISD3 = 0;
    //timer
    configTimer();
    
    //ad
    configADInterrupt();
    configAD();
    
    //usart
    configRS232();
    configUSARTInterrupts();    
    
    //I2C
    InitI2C_Master();
    
    //interrupts    
    selectChanel(channel);
    ADCON0bits.GODONE = 1;
    
    
    write_RTC_I2c();
    //ligando o timer 0    
    TMR0ON = 1;
    
    while (1){

        if(val == 30){                        
            //Leitura de Posição de data no DS-1307.
            read_RTC_I2c(0x04);
            dia = leitura;            
            __delay_ms(10);
            
            //Leitura de Posição de mês no DS-1307.
            read_RTC_I2c(0x05);
            mes = leitura;            
            __delay_ms(10);
            
            //Leitura de Posição de ano no DS-1307.
            read_RTC_I2c(0x06);
            ano = leitura;            
            __delay_ms(10);
            
            //Leitura de Posição da Hora no DS-1307.
            read_RTC_I2c(0x02);
            hora = leitura;            
            __delay_ms(10);

            //Leitura de Posição de Minuto no DS-1307.
            read_RTC_I2c(0x01);
            minuto = leitura;
            __delay_ms(10);

            //Leitura de Posição de Segundo no DS-1307.
            read_RTC_I2c(0x00);
            segundo = leitura;
            
            
            //"id&valor&ano-mes-dia hora:minuto:segundo"
            printf("%u&%u&20%02X-%02X-%02X %02X:%02X:%02X", id, data_ADC, ano, mes, dia, hora, minuto, segundo);

            __delay_ms(10);
            //TODO tirar daqui
            printf("\n");
            val = 0;
        }
    }
}