sbit LCD_RS at LATD2_bit; sbit LCD_EN at LATD3_bit; sbit LCD_D4 at LATD4_bit; sbit LCD_D5 at LATD5_bit; sbit LCD_D6 at LATD6_bit; sbit LCD_D7 at LATD7_bit; sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; void main() { int a; char s[16]; Lcd_Init(); Lcd_Cmd(_Lcd_Cursor_Off); TRISBbits.TRISB1 = 1; AD1PCFGbits.PCFG1 = 0; //pin RB1 definisan kao analogni ulaz AD1CON1bits.ADON = 0; AD1CON1bits.FORM0 = 0; AD1CON1bits.FORM1 = 0; //izlazni format integer AD1CON1bits.ASAM = 0; //set SAMP - start odabiranja AD1CON1bits.SSRC0 = 0; //clear SAMP - start konverzije AD1CON1bits.SSRC1 = 0; AD1CON1bits.SSRC2 = 0; AD1CHS = 0x0001; // kanal 1 AD1CON3bits.ADRC = 0; // interni takt AD1CON3bits.ADCS = 3; //TAD = TCY(ADCS+1) AD1CON1bits.ADON = 1; //ADC on while (1) { AD1CON1bits.SAMP = 1; //start odabiranja Delay_ms(50); // odabira ... AD1CON1bits.SAMP = 0; //Clear SAMP bit,start konverzije while (AD1CON1bits.DONE == 0);//ceka kraj konverzije a = ADC1BUF0; //ocitava se rezultat konverzije IntToStr(a, s); Lcd_Out(1,1,"napon:"); Lcd_Out(2,1,s); delay_ms(50); } } //------------------------------------------------------------------------------------------// sbit LCD_RS at LATD2_bit; sbit LCD_EN at LATD3_bit; sbit LCD_D4 at LATD4_bit; sbit LCD_D5 at LATD5_bit; sbit LCD_D6 at LATD6_bit; sbit LCD_D7 at LATD7_bit; sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; void main() { int a; char s[16]; Lcd_Init(); Lcd_Cmd(_Lcd_Cursor_Off); TRISBbits.TRISB10 = 1; AD1PCFGbits.PCFG10 = 0; AD1CON1bits.ADON = 0; AD1CON1bits.FORM0 = 0; AD1CON1bits.FORM1 = 0; //izlazni format integer AD1CON1bits.ASAM = 1; //start odabiranja automatski, po zavrsetku konverzije AD1CON1bits.SSRC0 = 0; //clear SAMP - start konverzije AD1CON1bits.SSRC1 = 0; AD1CON1bits.SSRC2 = 0; AD1CHS = 0x000A; // kanal 10 AD1CON3bits.ADRC = 0; // interni takt AD1CON3bits.ADCS = 3; //TAD = TCY(ADCS+1) AD1CHS = 0x000A; AD1CON1bits.ADON = 1; while (1) { Delay_ms(50); AD1CON1bits.SAMP = 0; //Clear SAMP bit, start konverzije while (AD1CON1bits.DONE == 0); a = ADC1BUF0; IntToStr(a, s); Lcd_Out(1,1,"napon:"); Lcd_Out(2,1,s); } } //-----------------------------------------------------------------------------------// sbit LCD_RS at LATD2_bit; sbit LCD_EN at LATD3_bit; sbit LCD_D4 at LATD4_bit; sbit LCD_D5 at LATD5_bit; sbit LCD_D6 at LATD6_bit; sbit LCD_D7 at LATD7_bit; sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; void main() { int a; char s[16]; Lcd_Init(); Lcd_Cmd(_Lcd_Cursor_Off); TRISBbits.TRISB10 = 1; AD1PCFGbits.PCFG10 = 0; AD1CON1bits.ADON = 0; AD1CON1bits.FORM0 = 0; AD1CON1bits.FORM1 = 0; //izlazni format integer AD1CON1bits.ASAM = 1; //start odabiranja automatski, po zavrsetku konverzije AD1CON1bits.SSRC0 = 0; //timer3 definise kraj odabiranja i pocetak konverzije AD1CON1bits.SSRC1 = 1; AD1CON1bits.SSRC2 = 0; AD1CHS = 0x000A; // kanal 10 AD1CON3bits.ADRC = 0; // interni takt AD1CON3bits.ADCS = 0; //TAD = TCY(ADCS+1) //AD1CON3bits.SAMC = 0b01111; //15*TAD=15*(2/Fosc)=3us vrijeme izmedu starta //akvizicije i satrta konverzije TMR3 = 0; //Reset timer3 PR3 = 0x3FFF; //PR3,broj taktova timera3 izmedu dva starta //konverzije T3CON = 0x8000; //timer3 ON, preskaler 1:1 AD1CON1bits.ADON = 1; while (1) { while (AD1CON1bits.DONE == 0); a = ADC1BUF0; IntToStr(a, s); Lcd_Out(1,1,"napon:"); Lcd_Out(2,1,s); } }