Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned char arr[8];
- short int Delsa_K;
- short int Delsa_T;
- void interrupt()
- {
- register unsigned char zodis,kiekis,bitas;
- if (PIR1.RCIF) //ar interuptas is UART'o
- {
- GIE_bit=0; PEIE_bit=0; RCIE_bit=0; // as tiek nedeliociau
- // cia per akis RCIE_bit, o ir tai nebutina, jei algoritmas kokybiskas ir niekada netruks ilgiau nei simbolio perdavimas
- if (UART1_Data_Ready()) // ar tikrai binary formate perduodi ZODIS ?
- {
- zodis=UART1_Read();
- for (kiekis=0,bitas=1;(zodis);bitas++) // numeracija 1..n
- 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
- }
- RCIF_bit=0; RCIE_bit=1; GIE_bit=1; PEIE_bit=1; // zek auksciau
- }
- } //end Interupt
- void main(void)
- {
- register unsigned char q;
- arr[0]=0;
- Delsa_K=50;
- Delsa_T=100;
- Init();
- while(1)
- {
- for (q=0;(arr[q])&&(q<sizeof(arr));q++)
- if (RCIF) break // galimai pasikeite ZODIS, todel pernauja
- // bet cia dar ne viskas, gali nesuveikti, rimciau butu veliaveliu mechanizmas
- else
- {
- rezultatas=getADC(arr[q]-1);
- hex2dec2uart(rezultatas, arr[q]-1); //pavercia ASCII ir issiuncia rez, ir kanalo numeri
- VDelay_ms(Delsa_K);
- }
- VDelay_ms(Delsa_T);
- } // end while(1)
- } // end MAIN
Advertisement
Add Comment
Please, Sign In to add comment