// LCD module connections
sbit LCD_RS at PORTB5_bit;
sbit LCD_EN at PORTB4_bit;
sbit LCD_D4 at PORTB3_bit;
sbit LCD_D5 at PORTB2_bit;
sbit LCD_D6 at PORTB1_bit;
sbit LCD_D7 at PORTB0_bit;

sbit LCD_RS_Direction at DDB5_bit;
sbit LCD_EN_Direction at DDB4_bit;
sbit LCD_D4_Direction at DDB3_bit;
sbit LCD_D5_Direction at DDB2_bit;
sbit LCD_D6_Direction at DDB1_bit;
sbit LCD_D7_Direction at DDB0_bit;
// End LCD module connections

// á karakter létrehozása=========================
const char character[] = {2,4,14,1,15,17,15,0};

void aaaa(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(64);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 0);
}
//================================================

unsigned char AU[]="00.00";
unsigned char AI[]="0.000";
unsigned char BU[]="00.00";
unsigned char BI[]="0.000";

unsigned long a_fesz;     //A tap feszultsege
unsigned long a_aram;     //A tap arama
unsigned long b_fesz;     //B tap feszultsege
unsigned long b_aram;     //B tap arama

unsigned long Ashunt_fesz;     //A tapban levo shunt ellenallason kialakulo fesz
unsigned long Bshunt_fesz;     //B tapban levo shunt ellenallason kialakulo fesz

int i;

void main() {
  DDRB=0x00;
  PORTB=0x00;
  DDRD=0x00;
  PORTD=0x00;
  
  Lcd_Init();  
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Cmd(_LCD_CURSOR_OFF);
  Lcd_Out(1,2,"Labort pegyseg v2.0");
  aaaa(1,8);
  Lcd_Out(2,1,"Nagy Tam s- edison14");
  aaaa(2,9);
  Delay_ms(2000);
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Out(1,1,"A: U=00.00V I=0.000A");
  Lcd_Out(2,1,"B: U=00.00V I=0.000A");
  ADC_Init();
  
  for(;;)
  {
  //A aram meres
  for(i=1;i=10;i++)
  {
  Ashunt_fesz=ADC_Read(3);
  Ashunt_fesz+=Ashunt_fesz;
  }
  Ashunt_fesz=(Ashunt_fesz/10)*5000/1023;              //Shunt ellenallason levo fesz kiszamitasa
  a_aram=Ashunt_fesz/0.6;                    //Shunt ellenallas erteke 1.2R ket darab van parhuzamba kotve
  AI[0]=(a_aram/1000)+48;
  AI[2]=((a_aram%1000)/100)+48;
  AI[3]=(((a_aram%1000)%100)/10)+48;
  AI[4]=(((a_aram%1000)%100)%10)+48;
  
  //A feszultseg meres
  for(i=1;i=10;i++)
  {
  a_fesz=ADC_Read(2);
  a_fesz+=a_fesz;
  }
  a_fesz=(((a_fesz/10)*5000/1023)*6.3)-Ashunt_fesz;                       //6,8 a trimmer es a ket ellenallas aranya
  AU[0]=(a_fesz/10000)+48;
  AU[1]=((a_fesz%10000)/1000)+48;
  AU[3]=(((a_fesz%10000)%1000)/100)+48;
  AU[4]=((((a_fesz%10000)%1000)%100)/10)+48;
  
  //B aram meres
  for(i=1;i=10;i++)
  {
  Bshunt_fesz=ADC_Read(5);
  Bshunt_fesz+=Bshunt_fesz;
  }
  Bshunt_fesz=(Bshunt_fesz/10)*5000/1023;
  b_aram=Bshunt_fesz/0.6;
  BI[0]=(b_aram/1000)+48;
  BI[2]=((b_aram%1000)/100)+48;
  BI[3]=(((b_aram%1000)%100)/10)+48;
  BI[4]=(((b_aram%1000)%100)%10)+48;
  
  //B feszultseg meres
  for(i=1;i=10;i++)
  {
  b_fesz=ADC_Read(4);
  b_fesz+=b_fesz;
  }
  b_fesz=(((b_fesz/10)*5000/1023)*6.4)-Bshunt_fesz;
  BU[0]=(b_fesz/10000)+48;
  BU[1]=((b_fesz%10000)/1000)+48;
  BU[3]=(((b_fesz%10000)%1000)/100)+48;
  BU[4]=((((b_fesz%10000)%1000)%100)/10)+48;
  
  Lcd_Out(1,6,AU);
  Lcd_Out(1,15,AI);
  Lcd_Out(2,6,BU);
  Lcd_Out(2,15,BI);
  
  Delay_ms(10);
  }
}