<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; ATtiny45 ADC]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=520</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=520&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «ATtiny45 ADC».]]></description>
		<lastBuildDate>Fri, 10 Jan 2025 07:24:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=11266#p11266</link>
			<description><![CDATA[<p>Фунцией&nbsp; analogRead(12) можно измерять примерное напряжение питания мк. Осуществляется через стабильный, но неточный источник опорного напряжения 1.1 в. Расчет напряжения U = 11*1024/analogRead(12). Произведение<br />11*1024 нужно корректировать из-за неточного ИОН.</p>]]></description>
			<author><![CDATA[null@example.com (klause)]]></author>
			<pubDate>Fri, 10 Jan 2025 07:24:55 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=11266#p11266</guid>
		</item>
		<item>
			<title><![CDATA[Re: ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=6850#p6850</link>
			<description><![CDATA[<p>VBG - внутреннее опорное</p><div class="codebox"><pre><code>#define CLK  PB2 // TM1637
#define DIO  PB1 // TM1637

// PB4 INPUT

void setup(){
cli();
 ADMUX |= (1 &lt;&lt; MUX3)|(1 &lt;&lt; MUX2)|(1 &lt;&lt; REFS1)|(1 &lt;&lt; REFS2);
 ADCSRA |= (1&lt;&lt;ADEN)|(1 &lt;&lt; ADATE)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
sei();
}

void loop(){
  long u=0;
  for(int n=0;n&lt;10;n++){
    while((ADCSRA &amp; (1 &lt;&lt; ADIF)) == 0);
     int u_data = (ADCL|ADCH &lt;&lt; 8);
     u += u_data;delay(100);
     }
     
     u=u/10;
     tm_print(2560*u/1023,3,5);
  }

void tm_dec(byte dig){
       for(byte i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; CLK);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; DIO);
       else
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; CLK);
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
 
       if (((PINB &gt;&gt; DIO) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB |= (1 &lt;&lt; CLK);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; DIO);del();
  }
 
void tm_print(int t, byte pd_t, int br){
        tm_start();tm_dec(0b10001000 + br);//tm_stop();tm_start();
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 = t/1000;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        case 10: data = 0b00000000;break;     // пусто
        case 11: data = 0b01000000;break;     // -
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      switch(pd_t){
        case 1 : data2 = data2+0b10000000;break;
        case 2 : data1 = data1+0b10000000;break;
        case 3 : data0 = data0+0b10000000;break;
        }
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delay(1);} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 17 Oct 2022 06:59:58 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=6850#p6850</guid>
		</item>
		<item>
			<title><![CDATA[Re: ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=6849#p6849</link>
			<description><![CDATA[<p>Differential ref 1.1V x1 <br />input PB3 PB4</p><div class="codebox"><pre><code>#define CLK  PB2 // TM1637
#define DIO  PB1 // TM1637

// INPUT PB3 PB4

void setup(){
cli();
 ADMUX |= (1 &lt;&lt; MUX2)|(1 &lt;&lt; MUX1)|(1 &lt;&lt; REFS1);
 ADCSRA |= (1&lt;&lt;ADEN)|(1 &lt;&lt; ADATE)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
 ADCSRB |= (1 &lt;&lt; 7);
sei();
}

void loop(){
     long u=0;
     unsigned int u_data,pol;
     int k0 = 35;// kall 0
     
  for(int n=0;n&lt;10;n++){
   while((ADCSRA &amp; (1 &lt;&lt; ADIF)) == 0);    
     u_data = (ADCL|ADCH &lt;&lt; 8);
     u += u_data;
     delay(100);
  }
   u=u/10+k0;
   if((u&gt;&gt;9)==1){pol=11;u = 1023-u;}
    else{pol=10;}
   
   tm_print(110*u/512,2,pol,5);
  }

void tm_dec(byte dig){
       for(byte i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; CLK);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; DIO);
       else
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; CLK);
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
 
       if (((PINB &gt;&gt; DIO) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB |= (1 &lt;&lt; CLK);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; DIO);del();
  }
 
void tm_print(int t, byte pd_t,int polar, int br){
        tm_start();tm_dec(0b10001000 + br);//tm_stop();tm_start();
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 = polar;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        case 10: data = 0b00000000;break;     // пусто
        case 11: data = 0b01000000;break;     // -
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      switch(pd_t){
        case 1 : data2 = data2+0b10000000;break;
        case 2 : data1 = data1+0b10000000;break;
        case 3 : data0 = data0+0b10000000;break;
        }
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delay(1);}  </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 17 Oct 2022 04:12:55 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=6849#p6849</guid>
		</item>
		<item>
			<title><![CDATA[Re: ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=6815#p6815</link>
			<description><![CDATA[<p>Temperature Measurement</p><div class="codebox"><pre><code>#define CLK  PB2 // TM1637
#define DIO  PB1 // TM1637

void setup(){
cli();
 ADMUX |= (1 &lt;&lt; MUX3)|(1 &lt;&lt; MUX2)|(1 &lt;&lt; MUX1)|(1 &lt;&lt; MUX0)|(1 &lt;&lt; REFS1);
 ADCSRA |= (1&lt;&lt;ADEN)|(1 &lt;&lt; ADATE)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
sei();
}

void loop(){
  long u=0;
  for(int n=0;n&lt;10;n++){
    while((ADCSRA &amp; (1 &lt;&lt; ADIF)) == 0);
     int u_data = (ADCL|ADCH &lt;&lt; 8);
     u += u_data;delay(100);
     }
     
     u=u/10;
     tm_print(u-25,1,5);
  }

void tm_dec(byte dig){
       for(byte i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; CLK);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; DIO);
       else
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; CLK);
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
 
       if (((PINB &gt;&gt; DIO) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB |= (1 &lt;&lt; CLK);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; DIO);del();
  }
 
void tm_print(int t, byte pd_t, int br){
        tm_start();tm_dec(0b10001000 + br);//tm_stop();tm_start();
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 = 10;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        case 10: data = 0b00000000;break;     // пусто
        case 11: data = 0b01000000;break;     // -
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      switch(pd_t){
        case 1 : data2 = data2+0b10000000;break;
        case 2 : data1 = data1+0b10000000;break;
        case 3 : data0 = data0+0b10000000;break;
        }
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delay(1);} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 14 Oct 2022 07:47:35 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=6815#p6815</guid>
		</item>
		<item>
			<title><![CDATA[Re: ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=6814#p6814</link>
			<description><![CDATA[<p>Single Ended Input</p><p>Voltage Reference 1.10V</p><div class="codebox"><pre><code>#define CLK  PB2 // TM1637
#define DIO  PB1 // TM1637

// PB4 INPUT

void setup(){
cli();
 ADMUX |= (1 &lt;&lt; MUX1)|(1 &lt;&lt; REFS1);
 ADCSRA |= (1&lt;&lt;ADEN)|(1 &lt;&lt; ADATE)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
sei();
}

void loop(){
  long u=0;
  for(int n=0;n&lt;10;n++){
    while((ADCSRA &amp; (1 &lt;&lt; ADIF)) == 0);
     int u_data = (ADCL|ADCH &lt;&lt; 8);
     u += u_data;delay(100);
     }
     
     u=u/10;
     tm_print(1100*u/1023,3,5);
  }

void tm_dec(byte dig){
       for(byte i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; CLK);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; DIO);
       else
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; CLK);
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
 
       if (((PINB &gt;&gt; DIO) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB |= (1 &lt;&lt; CLK);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; DIO);del();
  }
 
void tm_print(int t, byte pd_t, int br){
        tm_start();tm_dec(0b10001000 + br);//tm_stop();tm_start();
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 = t / 1000 % 10;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        case 10: data = 0b00000000;break;     // пусто
        case 11: data = 0b01000000;break;     // -
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      switch(pd_t){
        case 1 : data2 = data2+0b10000000;break;
        case 2 : data1 = data1+0b10000000;break;
        case 3 : data0 = data0+0b10000000;break;
        }
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delay(1);} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 14 Oct 2022 07:28:41 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=6814#p6814</guid>
		</item>
		<item>
			<title><![CDATA[Re: ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=6813#p6813</link>
			<description><![CDATA[<p>Single Ended Input</p><p>Voltage Reference 2.56V</p><div class="codebox"><pre><code>#define CLK  PB2 // TM1637
#define DIO  PB1 // TM1637

// PB4 INPUT

void setup(){
cli();
 ADMUX |= (1 &lt;&lt; MUX1)|(1 &lt;&lt; REFS2)|(1 &lt;&lt; REFS1);
 ADCSRA |= (1&lt;&lt;ADEN)|(1 &lt;&lt; ADATE)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
sei();
}

void loop(){
  long u=0;
  for(int n=0;n&lt;10;n++){
    while((ADCSRA &amp; (1 &lt;&lt; ADIF)) == 0);
     int u_data = (ADCL|ADCH &lt;&lt; 8);
     u += u_data;delay(100);
     }
     
     u=u/10;
     tm_print(256*u/1023,1,5);
  }

void tm_dec(byte dig){
       for(byte i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; CLK);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; DIO);
       else
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; CLK);
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
 
       if (((PINB &gt;&gt; DIO) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB |= (1 &lt;&lt; CLK);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; DIO);del();
  }
 
void tm_print(int t, bool pd_t, byte br){
        tm_start();tm_dec(0b10001000 + br);
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 =10;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }  
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        case 10: data = 0b00000000;break;     // пусто
        }
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      if(pd_t==1){data1 = data1+0b10000000;}
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delay(1);} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 14 Oct 2022 07:22:46 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=6813#p6813</guid>
		</item>
		<item>
			<title><![CDATA[ATtiny45 ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=6812#p6812</link>
			<description><![CDATA[<p>Single Ended Input</p><p>Voltage Reference VCC</p><div class="codebox"><pre><code>#define CLK  PB2 // TM1637
#define DIO  PB1 // TM1637

// PB4 INPUT

void setup(){
cli();
 ADMUX |= (1 &lt;&lt; MUX1);
 ADCSRA |= (1&lt;&lt;ADEN)|(1 &lt;&lt; ADATE)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
sei();
}

void loop(){
  long u=0;
  for(int n=0;n&lt;10;n++){
    while((ADCSRA &amp; (1 &lt;&lt; ADIF)) == 0);
     int u_data = (ADCL|ADCH &lt;&lt; 8);
     u += u_data;delay(100);
     }
     
     u=u/10;
     tm_print(500*u/1023,1,5);
  }

void tm_dec(byte dig){
       for(byte i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; CLK);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; DIO);
       else
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; CLK);
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
 
       if (((PINB &gt;&gt; DIO) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB |= (1 &lt;&lt; CLK);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; DIO);del();
         DDRB &amp;= ~(1 &lt;&lt; CLK);del();
         DDRB &amp;= ~(1 &lt;&lt; DIO);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; DIO);del();
  }
 
void tm_print(int t, bool pd_t, byte br){
        tm_start();tm_dec(0b10001000 + br);
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 =10;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }  
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        case 10: data = 0b00000000;break;     // пусто
        }
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      if(pd_t==1){data1 = data1+0b10000000;}
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delay(1);} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 14 Oct 2022 07:17:51 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=6812#p6812</guid>
		</item>
	</channel>
</rss>
