Electgpl

PIC - Manchester RX func

Aug 31st, 2017
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.80 KB | None | 0 0
  1. #include <16F676.h>
  2. #FUSES NOWDT
  3. #FUSES INTRC_IO
  4. #FUSES NOPROTECT
  5. #FUSES NOBROWNOUT
  6. #FUSES NOMCLR
  7. #FUSES NOCPD
  8. #FUSES NOPUT
  9. #use delay(int=4000000)
  10. #use rs232(baud=1200,parity=N,xmit=PIN_C4,rcv=PIN_C5,bits=8)
  11. int8 valor;
  12. //Manchester IEEE 802.3
  13. void reciveMan(void){
  14.    static int8 data[2];
  15.    static int8 i=0;
  16.    static int8 armado;
  17.    if(!kbhit()){
  18.       data[i++]=getchar();
  19.    }
  20.    if(i>1){
  21.       i=0;
  22.       if(bit_test(data[1],7)==1 && bit_test(data[1],6)==0) bit_clear(armado,7);
  23.       if(bit_test(data[1],7)==0 && bit_test(data[1],6)==1) bit_set(armado,7);
  24.       if(bit_test(data[1],5)==1 && bit_test(data[1],4)==0) bit_clear(armado,6);
  25.       if(bit_test(data[1],5)==0 && bit_test(data[1],4)==1) bit_set(armado,6);
  26.       if(bit_test(data[1],3)==1 && bit_test(data[1],2)==0) bit_clear(armado,5);
  27.       if(bit_test(data[1],3)==0 && bit_test(data[1],2)==1) bit_set(armado,5);
  28.       if(bit_test(data[1],1)==1 && bit_test(data[1],0)==0) bit_clear(armado,4);
  29.       if(bit_test(data[1],1)==0 && bit_test(data[1],0)==1) bit_set(armado,4);
  30.       if(bit_test(data[0],7)==1 && bit_test(data[0],6)==0) bit_clear(armado,3);
  31.       if(bit_test(data[0],7)==0 && bit_test(data[0],6)==1) bit_set(armado,3);
  32.       if(bit_test(data[0],5)==1 && bit_test(data[0],4)==0) bit_clear(armado,2);
  33.       if(bit_test(data[0],5)==0 && bit_test(data[0],4)==1) bit_set(armado,2);
  34.       if(bit_test(data[0],3)==1 && bit_test(data[0],2)==0) bit_clear(armado,1);
  35.       if(bit_test(data[0],3)==0 && bit_test(data[0],2)==1) bit_set(armado,1);
  36.       if(bit_test(data[0],1)==1 && bit_test(data[0],0)==0) bit_clear(armado,0);
  37.       if(bit_test(data[0],1)==0 && bit_test(data[0],0)==1) bit_set(armado,0);
  38.       valor=armado;
  39.    }
  40. }
  41. void main(void){
  42.    while(true){
  43.       reciveMan();
  44.       printf("valor: %d \n\r", valor);
  45.    }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment