View difference between Paste ID: QpFcqztr and YTwj3ywW
SHOW: | | - or go back to the newest paste.
1-
const short u = 20;
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-
       if (PIR1.RCIF == 1){                     // patikrinama koks trukis
6+
        
7-
       RCIE_bit = 0; // aptarnaujant truki, trukius reikia isjungti
7+
8-
       flag = 0;                                // kol negauti visi masyvo elementai, buti pertrauktyje
8+
       if (PIR1.RCIF == 1){               // patikrinama koks trukis
9-
       while(!UART1_Data_Ready());      // palaukti kol atsius 1 baita informacijos
9+
10-
       rxchar = UART1_Read();           // priskirti kintamajam
10+
       register unsigned char zodis,kiekis,bitas;
11-
       rxarray[i] = rxchar;             // priskirti esamam Masyvo elementui
11+
12-
       i++;                             // padidinti Masyva vienetu
12+
       RCIE_bit = 0;              // aptarnaujant truki, trukius reikia isjungti
13-
       //if (rxchar == 126 | rxchar == 125) { jei naudojami STOP char
13+
       flag = 0;         // kol negauti visi masyvo elementai, buti pertrauktyje
14-
       if (i == 4) {                // iveskite norimu nuskaityti simboliu kieki
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-
           } // end if
17+
       i++;                                          // padidinti Masyva vienetu
18
       if (rxchar == 124){     // jei gauta reiksme, liepianti pradeti matavima,
19-
       //duom = UART1_Read();
19+
       if (i == 4){          // tai palauk kol gaunami sekantys 3 baitai is UART
20-
       //duom = duom - 48;
20+
          zodis = rxarray[1];// kanalu konfiguracijos baitas priskiriamas
21-
       RCIF_bit = 0;                     // nunulinti UART flag
21+
          //                                                          kintamajam
22-
       RCIE_bit = 1; GIE_bit = 1; PEIE_bit = 1; //
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-
       } // END interrupt
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