Advertisement
ivosexa

перхидрол

Mar 13th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 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 sens5;
  9. int sens4;
  10. int sens3;
  11. int sens2;
  12. int sens1;
  13.  
  14. int a;
  15. int value;
  16. int measure();
  17. int totalvalue;
  18.  
  19. int main(void)
  20. {
  21. int distance;
  22.  
  23.  
  24. InitalizeLCD();
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. while (1)
  32. {
  33. measure();
  34.  
  35.  
  36. }
  37. }
  38. measure()
  39. {
  40. for(a=0; a<5; a++)
  41. {
  42. ADCSRA |= 1<<ADPS2;
  43. if(a==0)
  44. {
  45. ADMUX = 0b00000101;
  46. }
  47. if(a==1)
  48. {
  49. ADMUX = 0b00000100;
  50. }
  51. if(a==2)
  52. {
  53. ADMUX = 0b00000011;
  54. }
  55. if(a==3)
  56. {
  57. ADMUX = 0b00000010;
  58. }
  59. if(a==4)
  60. {
  61. ADMUX = 0b00000001;
  62. }
  63. ADCSRA |= 1<<ADIE;
  64. ADCSRA |= 1<<ADEN;
  65.  
  66. sei();
  67.  
  68. ADCSRA |= 1<<ADSC;
  69. }
  70.  
  71.  
  72.  
  73.  
  74.  
  75. }
  76.  
  77. ISR(ADC_vect)
  78. {
  79. int theLowADC = ADCL;
  80. int theTenBitResults = ADCH<<8 | theLowADC;
  81. int distance = theTenBitResults;
  82.  
  83. if(ADMUX = 0b00000101)
  84. {
  85. if(distance<100)
  86. {sens5=1;}
  87. else
  88. {sens5=0;}
  89. }
  90.  
  91. if(ADMUX = 0b00000100)
  92. {
  93. if(distance<100)
  94. {sens4=1;}
  95. else
  96. {sens4=0;}
  97. }
  98.  
  99. if(ADMUX = 0b00000011)
  100. {
  101. if(distance<100)
  102. {sens3=1;}
  103. else
  104. {sens3=0;}
  105. }
  106.  
  107. if(ADMUX = 0b00000010)
  108. {
  109. if(distance<100)
  110. {sens2=1;}
  111. else
  112. {sens2=0;}
  113. }
  114.  
  115. if(ADMUX = 0b00000001)
  116. {
  117. if(distance<100)
  118. {sens1=1;}
  119. else
  120. {sens1=0;}
  121. }
  122.  
  123. totalvalue= ((sens1*1 + sens2*2 + sens3*3 + sens4*4 + sens5*5)/(sens1+sens2+sens3+sens4+sens5));;
  124.  
  125. SendIntegerToLocation(1,2,totalvalue);
  126. _delay_ms(50);
  127.  
  128.  
  129. ADCSRA |= 1<<ADSC;
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement