Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <p24fj128ga010.h>
- #include <string.h>
- #define TVOLT 5
- #define AINPUTS 0xffcf
- _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
- _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
- #define LCDDATA 1
- #define LCDCMD 0
- #define PMDATA PMDIN1
- #define SCALE 308L
- #define POT 5
- #define TSENS 4
- #define AINPUTS 0xffcf
- void ADCinit(int amask){
- AD1PCFG=amask;
- AD1CON1=0x00e0;
- AD1CSSL=0;
- AD1CON2=0;
- AD1CON3=0x1f02;
- AD1CON1bits.ADON=1;
- }//ADCinit
- void LCDinit(void){
- PMCON=0x83BF;
- PMMODE=0x3FF;
- PMAEN=0x0001;
- T1CON=0x8030; //inicjalizacja Timer1
- TMR1=0; while(TMR1<2000); //32ms
- PMADDR=LCDCMD;
- PMDATA=0b00111000;
- TMR1=0; while(TMR1<3); //48us
- PMDATA=0b00001100; //wlacznie wyswietlacza, kursor wylaczony, mruganie wylaczone
- TMR1=0; while(TMR1<3); //48us
- PMDATA=0b00000001; //wyczyszczenie wyswietlacza
- TMR1=0; while(TMR1<100); //1,6ms
- PMDATA=0b00000110; //zwiekszenie kursora bez przesuniecia
- TMR1=0; while(TMR1<100);
- }//LCDinit
- int readADC(int ch){
- AD1CHS=ch;
- AD1CON1bits.SAMP=1;
- while(!AD1CON1bits.DONE);
- return ADC1BUF0;
- }//readADC
- char LCDread(int addr){
- int dummy;
- while(PMMODEbits.BUSY);
- PMADDR=addr;
- dummy=PMDATA;
- while(PMMODEbits.BUSY);
- return (PMDATA);
- } //LCDread
- #define LCDbusy() LCDread(LCDCMD) & 0x80
- #define LCDaddr() LCDread(LCDCMD) & 0x7F
- #define getLCD() LCDread(LCDDATA)
- void LCDwrite(int addr, char c){
- while(LCDbusy());
- while(PMMODEbits.BUSY); //czekamy na PMP, az bedzie dostepne
- PMADDR=addr;
- PMDATA=c;
- }//LCDwrite
- #define putLCD(d) LCDwrite(LCDDATA, (d))
- #define LCDcmd(c) LCDwrite(LCDCMD, (c))
- #define LCDhome() LCDwrite(LCDCMD, 2)
- #define LCDclr() LCDwrite(LCDCMD, 1)
- #define LCDreturn() LCDwrite(LCDCMD, 192)
- void putsLCD(char *s){
- while(*s)
- putLCD(*s++);
- }//putsLCD
- int main(void)
- {
- unsigned long i;
- unsigned int dir;
- unsigned char display=0;
- int przes = 20,przes2 = 0;
- LCDinit();
- char buf[17];
- char *tekst1 = " Witaj ";
- char *tekst2 = " Swiecie ";
- int volt;
- PORTA=0x0000;
- TRISA=0xFF00;
- TRISAbits.TRISA7=1;
- TRISD=0xFFFF;
- ADCinit(AINPUTS);
- again:
- for(i=101L*SCALE;i>0;i--)Nop();
- PORTA=(unsigned int) display;
- memcpy(buf,tekst1+przes, 16);
- buf[16]='\0';
- putsLCD(buf);
- LCDreturn();
- memcpy(buf,tekst2+przes, 16);
- buf[16]='\0';
- przes = przes>0?przes-1:20;
- putsLCD(buf);
- LCDhome();
- goto again;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement