int main(void){ //ADC TRISBbits.TRISB14 = 1; AD1CON1bits.SSRC = 7; AD1CON1bits.CLRASAM = 1; AD1CON3bits.SAMC = 16; AD1PCFGbits.PCFG4 = 0; AD1CHSbits.CH0SA = 14; AD1CON2bits.SMPI = 3; AD1CON1bits.ON = 1; AD1CON1bits.ASAM = 1; while(1){ AD1CON1bits.ASAM = 1; // Start conversion while(IFS1bits.AD1IF == 0 );// Wait while conversion not done (AD1IF == 0) delay(7); if(j++ == 57) { int *p = (int *)(&ADC1BUF0); for( i = 0; i < 16; i++ ){ sum += p[i*4]; } V=((sum/4)*33+511)/1023; printf("%d\n", V); j = 0; sum = 0; } send2displays(toBcd(V)); // Send voltage value to displays }; }
int main(void) { unsigned int i = 0, speedCounter = 0; initADC(); EnableInterrupts(); // Configure displays as outputs TRISB = TRISB & 0xFC00; while (1) { delay(5); if (i++ == 4) { AD1CON1bits.ASAM = 1; i = 0; } if (speedCounter++ >= speedValues[speed]) { if (++c >= 12) c = 0; speedCounter = 0; } send2displays(c); } return 0; }
void _int_(27) isr_adc(void){ AD1CON1bits.ASAM = 1; // Start conversion delay(10); if(j++ == 20){ sum = 0; V = 0; AD1CON1bits.ASAM = 1; // Start conversion while( IFS1bits.AD1IF == 0 ); // Wait while conversion not done int *p = (int *)(&ADC1BUF0); for( i = 0; i < 4; i++ ) { sum += p[i*4]; printf("%d\n", p[i*4]); } V=((sum/4)*50+511)/1023; j = 0; } send2displays(toBcd(V)); IFS1bits.AD1IF = 0; }
int main(void){ int v=0,i=0; TRISE = TRISE | 0xF0; TRISBbits.TRISB14=1; AD1PCFGbits.PCFG14=0; AD1CON1bits.SSRC = 7; AD1CON1bits.CLRASAM = 1; AD1CON3bits.SAMC = 16; AD1CON2bits.SMPI = 0; AD1CHSbits.CH0SA = 14; AD1CON1bits.ON = 1; while(1){ AD1CON1bits.ASAM = 1; // Start conversion while( IFS1bits.AD1IF == 0 ); // Wait while conversion not done IFS1bits.AD1IF = 1; adc_val=ADC1BUF0; v=(((adc_val*66)+33)/1024)-9; printf("test: %d\n", v); i=0; if(v<0){ do{ delay(5); send2displays(toBcd((char)v)); }while(++i <4); delay(500); LATBbits.LATB8=0; LATBbits.LATB9=0; delay(500); }else{ do{ delay(5); send2displays(toBcd((char)v)); }while(++i <4); } } return 0; }
void main(){ int LENGTH = 20, i; while(1){ for(i=0; i<LENGTH; i++){ int j=0; do{ send2displays(i); delay(10); }while(j++<50); } } }
void _int_(12) isr_T3(void) { static int counter = 0; send2displays(toBCD(value2display)); // Send "value2display" global variable to displays if(++counter==100){ counter = 0; puts_("V: "); putc(value2display/10 + 48); putc((value2display - (value2display/10)*10) + 48); putc('\n'); } IFS0bits.T3IF = 0; // Reset T3IF flag }
int main(void) { // Configure A/D module; int i = 0, V = 0; double average = 0; double sum = 0; TRISBbits.TRISB14 = 1; // RB4 digital output disconnected AD1PCFGbits.PCFG14 = 0; // RB4 configured as analog input (AN4) AD1CON1bits.SSRC = 7; // Conversion trigger selection bits: in this // modeaninternalcounterendssamplingand AD1CON1bits.CLRASAM = 1; // Stop conversions when the 1st A/D converter AD1CON1bits.ON = 1; AD1CON3bits.SAMC = 16; // Sample time is 16 TAD (TAD = 100 ns) AD1CHSbits.CH0SA = 14; AD1CON2bits.SMPI = 3; // uma conversao consecutiva while(1){ delay(10); // Wait 10 ms using the core timer if(i++ == 25) // 250 ms { AD1CON1bits.ASAM = 1; // Start conversion while(IFS1bits.AD1IF == 0 );// Wait while conversion not done (AD1IF == 0) int *p = (int *)(&ADC1BUF0); for( i = 0; i < 16; i++ ){ printInt10(p[i*4]); sum += p[i*4]; printStr("\n"); } average = sum/4; printf("%s %f","Média dos valores lidos: ", average ); V = (average*33+511)/1023; printStr("\n"); printf("%s %d","Tensão: ", V ); i = 0; sum = 0; average = 0; IFS1bits.AD1IF = 0; // Reset AD1IF V = toBCD(V); } send2displays(V); } return 0; // Consoante o número de conversões consecutivas, aparecerão os valores até 15 conversões consecutivas }
// Timer 3 void _int_(12) isr_T3(void) { unsigned char val = toBcd(value2displays); // Send "value2display" global variable to displays send2displays(val); if (readMode() != 2) send2dots(0x0010); // Send "value2displays" global variable to PC through UART1 if (counter++ >= 99) { putc(((val & 0x0F0) >> 4) + 48); putc('.'); putc((val & 0x0F) + 48); putc('\n'); counter = 0; }
int main(void) { int counter = 0, i = 0; while(1){ i = 0; do { delay(10); send2displays(counter); } while(++i < 4); counter = (counter+1)%20; } return 0; }
int main(void){ TRISE = (TRISE & 0xFFF0) | 0x00F0; LATE = LATE | 0x0F; while(1){ char value = (PORTE & 0xF0); value = value >> 4; send2displays(value); LATE = (LATE & 0xF0 )| value; } return 0; }
int main(void){ // Saídas -> RB0 a RB9 int i; while(1){ i = 0; do{ delay(10); send2displays(counter); } while(++i < 4); if(counter==20) reset(); counter++; } return 0; }
int main(void) { unsigned int i = 0; initADC(); EnableInterrupts(); // Configure displays as outputs TRISB = TRISB & 0xFC00; while (1) { delay(10); if (i++ == 2) { AD1CON1bits.ASAM = 1; i = 0; } send2displays(toBcd(value2displays)); } return 0; }
int main(void){ unsigned int i; unsigned char counter = 0x00; // RB0-RB9 will be Outputs TRISB = TRISB & 0xFC00; while(1){ i = 0; do{ // wait 10ms (100 Hz) delay(10); // call send2displays with counter value as argument send2displays(toBCD(counter)); } while(++i <4); counter = (counter+1)%60 ; } return 0; }
int main(void) { unsigned int i = 0; unsigned int value = 0; int* p; initADC(); TRISB = TRISB & 0xFC00; while (1) { delay(10); // Displays refresh rate = 100Hz if (i++ == 2) { AD1CON1bits.ASAM = 1; while( IFS1bits.AD1IF == 0 ); p = (int*)(&ADC1BUF0); value = convert2celsius(average(p)); IFS1bits.AD1IF = 0; i = 0; } send2displays(toBcd(value)); } return 0; }
void _int_(4) isr_T1(void){ send2displays(toBcd(V)); IFS0bits.T1IF = 0; }
int main(void) { TRISBbits.TRISB14 = 1; /* RB14 digital output disconnected */ AD1PCFGbits.PCFG14 = 0; /* RB14 configured as analog input (AN14) */ AD1CHSbits.CH0SA = 14; /* Selects AN14 as input for the A/D converter */ AD1CON2bits.SMPI = 3; /* 4 samples will be converted and stored */ /* Conversion trigger selection bits: in this // mode an internal counter ends sampling and // starts conversion*/ AD1CON1bits.SSRC = 7; /* // Stop conversions when the 1st A/D converter // interrupt is generated. At the same time, // hardware clears the ASAM bit*/ AD1CON1bits.CLRASAM =1; /* // Sample time is 16 TAD (TAD = 100 ns) */ AD1CON3bits.SAMC = 16; /* Enable A/D converter */ AD1CON1bits.ON=1; int i = 0, media = 0, v = 0; while(1){ delay(10); //Wait 10 ms using the core timer if(i++ == 25){//250ms v = media = 0; /* START THE CONVERSION */ AD1CON1bits.ASAM = 1; /* Start conversion */ /* Wait while conversion not done (AD1IF == 0) */ while( IFS1bits.AD1IF == 0 ); /* Read conversion result (ADC1BUF0 value) and print it */ int *p = (int *)(&ADC1BUF0); for(i=0; i<4; i++){ media += p[i*4]; v += (p[i*4]*33+511)/1023; } media /= 4; //printInt(media, 0x0004000A); //putChar('\n'); v /= 4; //printInt(v, 0x0004000A); /* Reset AD1IF */ IFS1bits.AD1IF = 0; i = 0; v = toBcd(v); } send2displays(v); } return 0; }
void _int_(12) isr_T3(void){ send2displays(value2display); IFS0bits.T3IF = 0; }
void _int_(16) isr_T4(void){ send2displays(); IFS0bits.T4IF = 0; }
void _int_(4) isr_T1(void) { // Send "value2display" global variable to displays send2displays(toBcd(value2displays)); IFS0bits.T1IF = 0; // Reset T3IF flag }