Advertisement
Guest User

sfdg

a guest
May 22nd, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.66 KB | None | 0 0
  1. /*******************************************************
  2. Main program
  3. *******************************************************/
  4. // Includes
  5. #include <float.h>
  6. #include <math.h>
  7. #include "ioADUC841.h"
  8. #include "LCD.h"
  9. #include <stdio.h>
  10. #include "Commun.h"
  11. #define kaire 0
  12. #define desine 1
  13. // Global variables
  14. signed long e=0,vel=5;
  15. unsigned long i=0;
  16. float max=0,min=5000;
  17. unsigned int vid[15], nu =4,leds=0;
  18. unsigned char a=0;
  19. unsigned char n=0;
  20. unsigned char b=0;
  21. unsigned char mas[10];
  22. // Functions prototypes
  23. void WD_refresh(void);
  24. void Init(void);
  25. void ADC_Init(void);
  26. //-------------------------------------------------------------------------------------------
  27. /* Main program */
  28. //--------------------------------------------------------------------------------------------
  29. int main(void)
  30. {
  31.  Init();
  32.  ADC_Init();
  33.  LCD_init();
  34.  delay_LCD(500);
  35.  SetLcdAdres (0x80);
  36.  delay_LCD(500);
  37.  priintLCD("Velinimas (ms)");
  38.  
  39.  while(1) // endless loop
  40.  {
  41.  e=0;
  42.  for(i=0; i<15; i++){
  43.    e=e+vid[i];
  44.  }
  45.    
  46.  e=(5000.0/(max-min+1))*(e/15-min+1)-2500;//ribos -2500~2500
  47.  
  48.  sprintf(mas,"=%d ms",(signed int)e);
  49.  SetLcdAdres (0xC0);
  50.  delay_LCD(500);
  51.  priintLCD(mas);
  52.  WD_refresh();
  53.  
  54.  leds=1<<nu;
  55.  Rg07=leds;
  56.  
  57.  }
  58. }
  59. void WD_refresh(void)
  60. {
  61.  CS6=0xff;
  62.  CS6=0;
  63. }
  64. // Interrupt processing if TF0 appears
  65. #pragma vector=TF0_int
  66. __interrupt void TF0_interupt(void)
  67. {
  68.   TCON&=0xEF;// atejus pertraukimui, stabdyti laikmati
  69.   TL0=0x87; // nustatyti pradines reikmes: jaun. baitas;  20.2ms
  70.   TH0=0x96; // ir vyr. baitas
  71.   TCON|=0x10;// vel paleisti laikmati
  72.  
  73.   if(vel==0){
  74.     if(e<0){
  75.       vel=-e/20+5;
  76.       if(nu==0){
  77.         nu=8;
  78.       }
  79.       nu--;
  80.     }
  81.     else{
  82.       vel=e/20+5;
  83.       nu++;
  84.       if(nu==8){
  85.         nu=0;
  86.       }
  87.     }
  88.   }
  89.   else{
  90.     vel--;
  91.   }
  92.  
  93. }
  94. // Interrupt processing if EOC appears
  95. #pragma vector=ADCI_int
  96. __interrupt void ADC_interupt(void)
  97. {    
  98.   vid[n]=(((unsigned int)(ADCDATAH & 0x0F)<<8)+(unsigned int)ADCDATAL);
  99.   if(max<vid[n]){
  100.     max=vid[n];
  101.   }
  102.   if(min>vid[n]){
  103.     min=vid[n];
  104.   }
  105.   n++;
  106.    
  107. if(n==15)
  108. {
  109.   n=0;
  110. }
  111.  }
  112. // CPU initialization
  113. void Init(void)
  114. {
  115. TMOD=0x01; // Nustatyti laikmacio darbo retima
  116. TL0=0x87; // nustatyti pradines reikmes: jaun. baitas;
  117. TH0=0x96; // ir vyr. baitas
  118. TCON_bit.TR0=1; // paleisti laikmati
  119. IE_bit.EA=1; // leisti visas pertrauktis
  120. IE_bit.ET0=1; // leisti pertraukti pagal TF0
  121. IE_bit.ET1=0; // drausti pertraukti pagal TF1
  122. IE_bit.EX0=0; // drausti pertraukti pagal int0
  123. IE_bit.EX1=0; // drausti pertraukti pagal int1
  124. return;
  125. }
  126. /* ADC initialization */
  127. void ADC_Init(void)
  128. {
  129. ADCCON1=0x8C;
  130. ADCCON2=0x20;
  131. IE_bit.EADC=1;
  132. return;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement