#include <mega8.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x40 
//  0101100101 0101011011 010110010-1-11111- 1
//            -  код   -           -c-пауза

//  0101001101 1010010101 010100110-1-11111- 2
//            -  код   -           -c-пауза

//  01010101010101010101 - синхро

//ацп №1
//0-0101-0101010101-1010-1010101010-1-11111   30 бит 31дел (1024/33=31)
//с- №  -   проп   - и№ - и проп   -c-пауза

//ацп №2
//0-1010-0101010101-0101-1010101010-1-11111   
//с- №  -   проп   - и№ - и проп   -c-пауза 

/////////////////////////////////// ацп
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
/////////////////////////////////////////////////////////////
void main(void)
{
DDRC=0b00000000;  // вход 
PORTC.5=0;        // вход ацп 1
PORTC.4=0;        // вход ацп 2
PORTC.0=1;        // вход кнопки 
PORTC.1=1;        // вход кнопки
DDRD=0b11111111;  // выход индикатор
PORTD=0b00000000; 
DDRB.1=1;         // выход передатчик
PORTB.1=1;         
ADMUX=ADC_VREF_TYPE & 0xff; // настройки ацп
ADCSRA=0x83;
///////////////////////////////////////////// вкл 
mesto_1:
//////////////////////////////////////////// измерение ацп 1 (PC5)
read_adc(5); // вызов функции. измерение PC5
PORTD=ADCW/33; //PORTD=ADCW/33;-5v-0011111-31
//////////////////////////////////////////// передача ацп 1       
PORTB.1=0;         //1 старт бит  "0"
delay_ms(1);
/////////////////////////////////// № +кнопки
PORTB.1=0;   //2 бит  
delay_ms(1);
PORTB.1=1;   //3 бит
delay_ms(1);
PORTB.1=0;   //4 бит   
delay_ms(1);
PORTB.1=1;   //5 бит
delay_ms(1);
////////////////////////////////// +ацп 1
PORTB.1=PORTD.0;   //6 бит  +1
delay_ms(1);
PORTB.1=~PORTD.0;  //7 бит
delay_ms(1);
PORTB.1=PORTD.1;   //8 бит  +2
delay_ms(1);
PORTB.1=~PORTD.1;  //9 бит
delay_ms(1);
PORTB.1=PORTD.2;   //10 бит  +3
delay_ms(1);
PORTB.1=~PORTD.2;  //11 бит
delay_ms(1);
PORTB.1=PORTD.3;   //12 бит  +4
delay_ms(1);
PORTB.1=~PORTD.3;  //13 бит
delay_ms(1);
PORTB.1=PORTD.4;   //14 бит  +5
delay_ms(1);
PORTB.1=~PORTD.4;  //15 бит
delay_ms(1);
////////////////////////////////  инверсия
PORTD=~PORTD;   
////////////////////////////////
/////////////////////////////////// № -кнопки
PORTB.1=1;   //16 бит  
delay_ms(1);
PORTB.1=0;   //17 бит
delay_ms(1);
PORTB.1=1;   //18 бит   
delay_ms(1);
PORTB.1=0;   //19 бит
delay_ms(1);
////////////////////////////////// -ацп 1
PORTB.1=PORTD.0;   //20 бит  -1
delay_ms(1);
PORTB.1=~PORTD.0;  //21 бит
delay_ms(1);
PORTB.1=PORTD.1;   //22 бит  -2
delay_ms(1);
PORTB.1=~PORTD.1;  //23 бит
delay_ms(1);
PORTB.1=PORTD.2;   //24 бит  -3
delay_ms(1);
PORTB.1=~PORTD.2;  //25 бит
delay_ms(1);
PORTB.1=PORTD.3;   //26 бит  -4
delay_ms(1);
PORTB.1=~PORTD.3;  //27 бит
delay_ms(1); 
PORTB.1=PORTD.4;   //28 бит  -5
delay_ms(1);
PORTB.1=~PORTD.4;  //29 бит
delay_ms(1); 
PORTB.1=1;         //30 стоп бит  "1"
//////////////////////////////// коррекция пауза
delay_ms(5);
//////////////////////////////////////////// измерение ацп 2 (PC4)
read_adc(4); // вызов функции. измерение PC4
PORTD=ADCW/33; //PORTD=ADCW/33;-5v-0011111-31
//////////////////////////////////////////// передача ацп 2       
PORTB.1=0;         //1 старт бит  "0"
delay_ms(1);
/////////////////////////////////// № +кнопки
PORTB.1=1;   //2 бит  
delay_ms(1);
PORTB.1=0;   //3 бит
delay_ms(1);
PORTB.1=1;   //4 бит   
delay_ms(1);
PORTB.1=0;   //5 бит
delay_ms(1);
////////////////////////////////// +ацп 2
PORTB.1=PORTD.0;   //6 бит  +1
delay_ms(1);
PORTB.1=~PORTD.0;  //7 бит
delay_ms(1);
PORTB.1=PORTD.1;   //8 бит  +2
delay_ms(1);
PORTB.1=~PORTD.1;  //9 бит
delay_ms(1);
PORTB.1=PORTD.2;   //10 бит  +3
delay_ms(1);
PORTB.1=~PORTD.2;  //11 бит
delay_ms(1);
PORTB.1=PORTD.3;   //12 бит  +4
delay_ms(1);
PORTB.1=~PORTD.3;  //13 бит
delay_ms(1);
PORTB.1=PORTD.4;   //14 бит  +5
delay_ms(1);
PORTB.1=~PORTD.4;  //15 бит
delay_ms(1);
////////////////////////////////  инверсия
PORTD=~PORTD;   
////////////////////////////////
/////////////////////////////////// № -кнопки
PORTB.1=0;   //16 бит  
delay_ms(1);
PORTB.1=1;   //17 бит
delay_ms(1);
PORTB.1=0;   //18 бит   
delay_ms(1);
PORTB.1=1;   //19 бит
delay_ms(1);
////////////////////////////////// -ацп 2
PORTB.1=PORTD.0;   //20 бит  -1
delay_ms(1);
PORTB.1=~PORTD.0;  //21 бит
delay_ms(1);
PORTB.1=PORTD.1;   //22 бит  -2
delay_ms(1);
PORTB.1=~PORTD.1;  //23 бит
delay_ms(1);
PORTB.1=PORTD.2;   //24 бит  -3
delay_ms(1);
PORTB.1=~PORTD.2;  //25 бит
delay_ms(1);
PORTB.1=PORTD.3;   //26 бит  -4
delay_ms(1);
PORTB.1=~PORTD.3;  //27 бит
delay_ms(1); 
PORTB.1=PORTD.4;   //28 бит  -5
delay_ms(1);
PORTB.1=~PORTD.4;  //29 бит
delay_ms(1); 
PORTB.1=1;         //30 стоп бит  "1"
//////////////////////////////// коррекция пауза
delay_ms(5);
//////////////////////////////////////////// № кн
if (PINC.0==0) {  /////////////// кн 1
PORTB.1=0; //1
delay_ms(1);
PORTB.1=1; //2
delay_ms(1);
PORTB.1=0; //3
delay_ms(1);
PORTB.1=1; //4
delay_ms(1);
PORTB.1=1; //5
delay_ms(1);
PORTB.1=0; //6
delay_ms(1);
PORTB.1=0; //7
delay_ms(1);
PORTB.1=1; //8
delay_ms(1);
PORTB.1=0; //9
delay_ms(1);
PORTB.1=1; //10
delay_ms(1);
PORTB.1=0; //11
delay_ms(1);
PORTB.1=1; //12
delay_ms(1);
PORTB.1=0; //13
delay_ms(1);
PORTB.1=1; //14
delay_ms(1);
PORTB.1=0; //15
delay_ms(1);
PORTB.1=1; //16
delay_ms(1);
PORTB.1=1; //17
delay_ms(1);
PORTB.1=0; //18
delay_ms(1);
PORTB.1=1; //19
delay_ms(1);
PORTB.1=1; //20
delay_ms(1);
PORTB.1=0; //21
delay_ms(1);
PORTB.1=1; //22
delay_ms(1);
PORTB.1=0; //23
delay_ms(1);
PORTB.1=1; //24
delay_ms(1);
PORTB.1=1; //25
delay_ms(1);
PORTB.1=0; //26
delay_ms(1);
PORTB.1=0; //27
delay_ms(1);
PORTB.1=1; //28
delay_ms(1);
PORTB.1=0; //29
delay_ms(1);
PORTB.1=1; //30
//////////////////////////////// коррекция пауза
delay_ms(6); 
  };
if (PINC.1==0) {  /////////////// кн 2 
PORTB.1=0; //1
delay_ms(1);
PORTB.1=1; //2
delay_ms(1);
PORTB.1=0; //3
delay_ms(1);
PORTB.1=1; //4
delay_ms(1);
PORTB.1=0; //5
delay_ms(1);
PORTB.1=0; //6
delay_ms(1);
PORTB.1=1; //7
delay_ms(1);
PORTB.1=1; //8
delay_ms(1);
PORTB.1=0; //9
delay_ms(1);
PORTB.1=1; //10
delay_ms(1);
PORTB.1=1; //11
delay_ms(1);
PORTB.1=0; //12
delay_ms(1);
PORTB.1=1; //13
delay_ms(1);
PORTB.1=0; //14
delay_ms(1);
PORTB.1=0; //15
delay_ms(1);
PORTB.1=1; //16
delay_ms(1);
PORTB.1=0; //17
delay_ms(1);
PORTB.1=1; //18
delay_ms(1);
PORTB.1=0; //19
delay_ms(1);
PORTB.1=1; //20
delay_ms(1);
PORTB.1=0; //21
delay_ms(1);
PORTB.1=1; //22
delay_ms(1);
PORTB.1=0; //23
delay_ms(1);
PORTB.1=1; //24
delay_ms(1);
PORTB.1=0; //25
delay_ms(1);
PORTB.1=0; //26
delay_ms(1);
PORTB.1=1; //27
delay_ms(1);
PORTB.1=1; //28
delay_ms(1);
PORTB.1=0; //29
delay_ms(1);
PORTB.1=1; //30
//////////////////////////////// коррекция пауза
delay_ms(6);  
  };
////////////////////////////////////
goto mesto_1;
};