Guest User

Untitled

a guest
May 18th, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1. unsigned char arr[8];
  2. short int Delsa_K;
  3. short int Delsa_T;
  4.  
  5. void interrupt()
  6. {
  7. register unsigned char zodis,kiekis,bitas;                    
  8.  
  9.     if (PIR1.RCIF) //ar interuptas is UART'o
  10.     {                      
  11.         GIE_bit=0; PEIE_bit=0; RCIE_bit=0; // as tiek nedeliociau
  12. // cia per akis RCIE_bit, o ir tai nebutina, jei algoritmas kokybiskas ir niekada netruks ilgiau nei simbolio perdavimas
  13.  
  14.         if (UART1_Data_Ready()) // ar tikrai binary formate perduodi ZODIS ?
  15.         {  
  16.             zodis=UART1_Read();
  17.  
  18.             for (kiekis=0,bitas=1;(zodis);bitas++) // numeracija 1..n
  19.                 if (zodis&(1<<bitas)) arr[kiekis++]=bitas;
  20.  
  21.             while (kiekis<=sizeof(arr)) arr[kiekis]=0; // cia tam atvejui jei pertraukimas ivyko main prodeduroje apdorojant nuskaitymo cikla
  22.         }
  23.         RCIF_bit=0; RCIE_bit=1; GIE_bit=1; PEIE_bit=1; // zek auksciau
  24.     }
  25. } //end Interupt
  26.  
  27.  
  28. void main(void)
  29. {
  30. register unsigned char q;
  31.  
  32.     arr[0]=0;
  33.     Delsa_K=50;
  34.     Delsa_T=100;
  35.     Init();
  36.  
  37.     while(1)
  38.     {
  39.         for (q=0;(arr[q])&&(q<sizeof(arr));q++)
  40.         if (RCIF) break // galimai pasikeite ZODIS, todel pernauja
  41. // bet cia dar ne viskas, gali nesuveikti, rimciau butu veliaveliu mechanizmas
  42.         else        
  43.         {
  44.              rezultatas=getADC(arr[q]-1);
  45.              hex2dec2uart(rezultatas, arr[q]-1); //pavercia ASCII ir issiuncia rez, ir kanalo numeri
  46.              VDelay_ms(Delsa_K);
  47.         }
  48.         VDelay_ms(Delsa_T);
  49.  
  50.     } // end while(1)
  51.  
  52. } // end MAIN
Advertisement
Add Comment
Please, Sign In to add comment