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