Guest User

Untitled

a guest
May 19th, 2012
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const short u = 4;
  2. char rxchar, i = 0, flag = 0; // Kintamasis duomenu is UART laikymui ir Masyvo skaitiklis
  3. unsigned char rxarray[u];     // Masyvas laikyti visiems atsiustiems vienetams
  4. unsigned int rezultatas;      // ADC verte
  5. unsigned char arr[8];
  6.        
  7. void interrupt() {                       // auksto prioriteto trukis
  8.        if (PIR1.RCIF == 1){               // patikrinama koks trukis
  9.  
  10.        register unsigned char zodis,kiekis,bitas;
  11.  
  12.        RCIE_bit = 0;              // aptarnaujant truki, trukius reikia isjungti
  13.        flag = 0;         // kol negauti visi masyvo elementai, buti pertrauktyje
  14.        while(!UART1_Data_Ready());   // palaukti kol atsius 1 baita informacijos
  15.        rxchar = UART1_Read();                            // priskirti kintamajam
  16.        rxarray[i] = rxchar;                 // priskirti esamam Masyvo elementui
  17.        i++;                                          // padidinti Masyva vienetu
  18.        if (rxchar == 124){     // jei gauta reiksme, liepianti pradeti matavima,
  19.        if (i == 4){          // tai palauk kol gaunami sekantys 3 baitai is UART
  20.           zodis = rxarray[1];// kanalu konfiguracijos baitas priskiriamas
  21.           //                                                          kintamajam
  22.           for(kiekis=0,bitas=1;(zodis);bitas++)// numeracija 1..n _+_+_ atlik
  23.           //                                      aktyviu kanalu sukurimo masyva
  24.                 if (zodis&(1<<bitas)) arr[kiekis++]=bitas;
  25.                 while (kiekis<=sizeof(arr)) arr[kiekis]=0; // cia tam atvejui
  26.           // jei pertraukimas ivyko main prodeduroje apdorojant nuskaitymo cikla
  27.  
  28.            i = 0;                           // vel galima priimti valdymo masyva
  29.            flag = 1;                               // eiti y main/switch skitli.
  30.            } // end if(i == 4)
  31.            } // end if(else if (rxchar == 123)
  32.  
  33.            else if (rxchar != 124){// jei gauta reiksme nelygi matavimo reiksmei
  34.            //                      eik i switch sekcija ir dirbk nurodytu rezimu
  35.            //rxchar = rxarray[0];
  36.            i = 0;
  37.            flag = 1;
  38.            }
  39.  
  40.        RCIE_bit = 1;                                           // leisti trukius
  41.        RCIF_bit = 0;                                      // nunulinti UART flag
  42.        } // END  if (PIR1.RCIF)
  43.  
  44.  
  45.        } // END interrupt
  46.  
  47.  
  48. void main(void)
  49. {
  50. register unsigned char q;
  51. Init();
  52.  
  53.  
  54.   if(flag){
  55.  
  56.   switch(rxarray[0])
  57.            {
  58.            case 0:// negauta jokia valdymo reiksme, signalizuok ledais
  59.            PORTB = 0xff;
  60.            Delay_ms(200);
  61.            PORTB = 0x00;
  62.            Delay_ms(200);
  63.            break;
  64.  
  65.            case 124:
  66.            for (q=0;(arr[q])&&(q<sizeof(arr));q++)
  67.            {
  68.            rezultatas=getADC(arr[q]-1);      // nuskaitau parinkto kanalo itampa
  69.            hex2dec2uart(rezultatas, arr[q]-1); // paverciu ASCII ir issiunciu
  70.            //                                         rezultata ir kanalo numeri
  71.            VDelay_ms(rxarray[2]);// palaukiu kol reikes nuskaityti kita kanala
  72.            }
  73.            
  74.            VDelay_ms(rxarray[3]);// palaukia kol nuskaitomi kituose moduliuose
  75.            //                                            esantys aktyvus kanalai
  76.            break;
  77.  
  78.            case 120:
  79.            //sleep(); //komanda si nutolusi moduli laikanti Low_power rezime
  80.            break;
  81.            
  82.            //case x:  // kitos nutolusio modulio valdymo komandos
  83.            //ready();
  84.            //break;
  85.            
  86.            } //end Switch
  87.            } //end if(flag)
  88.  
  89. }// end main
Advertisement
Add Comment
Please, Sign In to add comment