#include #include #include #include void DelayT0(unsigned long count); //delay "10" 10us void WriteData(unsigned char cData); //datem am lcd void WriteInstr(unsigned char cInstr); //befehl an lcd void DisplayBusy(void); //busy flag lcd abfragen void InitLcd(void); //lcd initialisieren void WriteLine(unsigned char *text,unsigned char cursor); //schreiben einer ganzen linie void ReadAD(void); //spannungswerte lesen void ReadADS(void); //strom werte lesen void ShowCounts(float ergebnis); //anzeige auf display void display(float val, uchar *ptr ); //float to asci void get_gray_delta( void ); //***************lcd ports**************** #define LCDPORT P2 #define ENA P1_B0 //enable lcd #define RW P1_B1 //schreiben oder lesen lcd #define RS P1_B2 //befehl senden oder lesen lcd #define BF P2_B7 //*****************da ports************** //spannung #define DATA P0_B7 #define CLK P0_B6 #define CS P0_B5 //strom #define DATAS P0_B1 #define CLKS P0_B3 #define CSS P0_B0 //*****************encoder**************** //#define GRAY_B P1_B6 #define GRAY_A P1_B7 //lcd variablen************************** #define clear_LCD 0x01 #define home_LCD 0x02 #define set_LCD 0x38 #define LCD_off 0x0E #define entry_mode 0x06 #define cursor_off 0x0C #define cursor_blink 0x0F #define EZeile 0x80 //1.Zeile anfang #define ZZeile 0xC0 //2.Zeile anfang //lcd text***************************************** code char welcome1[]="Test Programm "; code char welcome2[]=" "; code char leer[] =" "; near char buf[] = ""; //buffer für int zahl ins ram speichern; near char ComChar[] = ""; near float AnalogBuf=0; //buffer für analogwert wandler spannung near signed char zaehler=100; near unsigned char prell_1 = 0; near unsigned char prell_2 = 0; IRQ_VECTOR(ext_int4,IRQ_INT4) void ext_int4 (void) interrupt { unsigned int i; EA=0; EX4=0; for(i=0;i<2000;i++){ #asmline nop; } EXIF &= 15; if(GRAY_A == 1) zaehler +=1; if(GRAY_A == 0) zaehler-=1; } void main(void) { unsigned char i; unsigned char az_zeichen; EA = 0; DelayT0(10000); //warten bis alle spannung stabil sind InitLcd(); WriteInstr(0x0C); //cursor off; WriteLine(welcome1,EZeile); //begrüssungstext WriteLine(welcome2,ZZeile); DelayT0(50000); EA = 1; EX4 = 1; for(;;){ az_zeichen=sprintf(buf,"%d",zaehler); //int to string WriteInstr(0xC0); //display löschen for(i=0;i < (az_zeichen+1);i++){ WriteData(leer[i]); } WriteInstr(0xC0); for(i=0;i< az_zeichen;i++){ WriteData(buf[i]); } DelayT0(50); EA=1; EX4=1; EXIF &= 15; } }