Advertisement
ivosexa

meri i vurti

Dec 25th, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #define F_CPU 1000000UL
  2. #include <avr/io.h>
  3. #include <avr/interrupt.h>
  4. #include "LCD4b.h"
  5. #include <unit/delay.h>
  6. #include <math.h>
  7.  
  8. int distance;  
  9. int count; 
  10. int count1;
  11. int measure[2];
  12. void Measure();
  13.  
  14.     int main(void)
  15.     {
  16.    
  17.    
  18.     TCCR1A |= 1<<WGM11 | 1<<COM1A1 ;
  19.     TCCR1B |= 1<<WGM13 | 1<<WGM12 | 1<<CS10;
  20.     ICR1 = 19999;
  21.    
  22.     DDRB = 0xff;
  23.     PORTB= 0x00;
  24.    
  25.    
  26.    
  27.         while (1)
  28.         {
  29.        
  30.         Measure();
  31.    
  32.         if(count == 1)
  33.             {
  34.             count1=1;
  35.             OCR1A =900;
  36.             _delay_ms(500);
  37.             Measure();
  38.             _delay_ms(500);
  39.            
  40.            
  41.            
  42.             count1=2;
  43.             OCR1A =1900;
  44.             _delay_ms(500);
  45.             Measure();
  46.             _delay_ms(500);
  47.            
  48.             OCR1A =1400;
  49.             _delay_ms(500);
  50.            
  51.            
  52.             count ++;
  53.            
  54.                 if(measure[0] > measure[1])
  55.                     {
  56.                     PORTB=1 <<PB6;
  57.                     _delay_ms(1000);
  58.                     }
  59.                 else
  60.                     {
  61.                     PORTB=1 <<PB7;
  62.                     _delay_ms(1000);
  63.                     }
  64.             count1=0;
  65.             }
  66.        
  67.        
  68.        
  69.         }
  70.     }
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77. ISR(ADC_vect)
  78. {
  79. int  theLowADC = ADCL;
  80. int  theTenBitResults = ADCH<<8 | theLowADC;
  81.  
  82. float volts = ((theTenBitResults)*0.0048828125) ;
  83. int distance = (volts*2.54/0.0098);
  84.  
  85. if(distance <20)
  86. {
  87. count=1;
  88. }
  89.  
  90.     switch(count1)
  91.         {
  92.             case 1:
  93.             measure[0]=distance;
  94.                 break;
  95.             case 2 :
  96.             measure[1]=distance;
  97.                 break;
  98.            
  99.         }
  100.  
  101. }
  102.  
  103.  
  104.  
  105. void Measure()
  106.  
  107.         {
  108.            
  109.            
  110.            
  111.             ADCSRA |= 1<<ADPS2;
  112.             ADMUX |= 0b00000101;
  113.             ADCSRA |= 1<<ADIE;
  114.             ADCSRA |= 1<<ADEN;
  115.             sei();
  116.             ADCSRA |= 1<<ADSC;
  117.  
  118.            
  119.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement