Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const short u = 4;
- char rxchar, i = 0, flag = 0; // Kintamasis duomenu is UART laikymui ir Masyvo skaitiklis
- unsigned char rxarray[u]; // Masyvas laikyti visiems atsiustiems vienetams
- unsigned int rezultatas; // ADC verte
- unsigned char arr[8];
- void interrupt() { // auksto prioriteto trukis
- if (PIR1.RCIF == 1){ // patikrinama koks trukis
- register unsigned char zodis,kiekis,bitas;
- RCIE_bit = 0; // aptarnaujant truki, trukius reikia isjungti
- flag = 0; // kol negauti visi masyvo elementai, buti pertrauktyje
- while(!UART1_Data_Ready()); // palaukti kol atsius 1 baita informacijos
- rxchar = UART1_Read(); // priskirti kintamajam
- rxarray[i] = rxchar; // priskirti esamam Masyvo elementui
- i++; // padidinti Masyva vienetu
- if (rxchar == 124){ // jei gauta reiksme, liepianti pradeti matavima,
- if (i == 4){ // tai palauk kol gaunami sekantys 3 baitai is UART
- zodis = rxarray[1];// kanalu konfiguracijos baitas priskiriamas
- // kintamajam
- for(kiekis=0,bitas=1;(zodis);bitas++)// numeracija 1..n _+_+_ atlik
- // aktyviu kanalu sukurimo masyva
- if (zodis&(1<<bitas)) arr[kiekis++]=bitas;
- while (kiekis<=sizeof(arr)) arr[kiekis]=0; // cia tam atvejui
- // jei pertraukimas ivyko main prodeduroje apdorojant nuskaitymo cikla
- i = 0; // vel galima priimti valdymo masyva
- flag = 1; // eiti y main/switch skitli.
- } // end if(i == 4)
- } // end if(else if (rxchar == 123)
- else if (rxchar != 124){// jei gauta reiksme nelygi matavimo reiksmei
- // eik i switch sekcija ir dirbk nurodytu rezimu
- //rxchar = rxarray[0];
- i = 0;
- flag = 1;
- }
- RCIE_bit = 1; // leisti trukius
- RCIF_bit = 0; // nunulinti UART flag
- } // END if (PIR1.RCIF)
- } // END interrupt
- void main(void)
- {
- register unsigned char q;
- Init();
- if(flag){
- switch(rxarray[0])
- {
- case 0:// negauta jokia valdymo reiksme, signalizuok ledais
- PORTB = 0xff;
- Delay_ms(200);
- PORTB = 0x00;
- Delay_ms(200);
- break;
- case 124:
- for (q=0;(arr[q])&&(q<sizeof(arr));q++)
- {
- rezultatas=getADC(arr[q]-1); // nuskaitau parinkto kanalo itampa
- hex2dec2uart(rezultatas, arr[q]-1); // paverciu ASCII ir issiunciu
- // rezultata ir kanalo numeri
- VDelay_ms(rxarray[2]);// palaukiu kol reikes nuskaityti kita kanala
- }
- VDelay_ms(rxarray[3]);// palaukia kol nuskaitomi kituose moduliuose
- // esantys aktyvus kanalai
- break;
- case 120:
- //sleep(); //komanda si nutolusi moduli laikanti Low_power rezime
- break;
- //case x: // kitos nutolusio modulio valdymo komandos
- //ready();
- //break;
- } //end Switch
- } //end if(flag)
- }// end main
Advertisement
Add Comment
Please, Sign In to add comment