Advertisement
Electgpl

PIC - Manchester RX

Aug 31st, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.72 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. //Manchester IEEE 802.3
  12. void main(){
  13.    char data[2];
  14.    int8 i=0, armado=0;
  15.    while(true){
  16.       if(!kbhit()){
  17.          data[i++]=getchar();
  18.       }
  19.       if(i>1){
  20.          i=0;
  21.          if(bit_test(data[1],7)==1&&bit_test(data[1],6)==0) bit_clear(armado,7);
  22.          if(bit_test(data[1],7)==0&&bit_test(data[1],6)==1) bit_set(armado,7);
  23.          if(bit_test(data[1],5)==1&&bit_test(data[1],4)==0) bit_clear(armado,6);
  24.          if(bit_test(data[1],5)==0&&bit_test(data[1],4)==1) bit_set(armado,6);
  25.          if(bit_test(data[1],3)==1&&bit_test(data[1],2)==0) bit_clear(armado,5);
  26.          if(bit_test(data[1],3)==0&&bit_test(data[1],2)==1) bit_set(armado,5);
  27.          if(bit_test(data[1],1)==1&&bit_test(data[1],0)==0) bit_clear(armado,4);
  28.          if(bit_test(data[1],1)==0&&bit_test(data[1],0)==1) bit_set(armado,4);
  29.          if(bit_test(data[0],7)==1&&bit_test(data[0],6)==0) bit_clear(armado,3);
  30.          if(bit_test(data[0],7)==0&&bit_test(data[0],6)==1) bit_set(armado,3);
  31.          if(bit_test(data[0],5)==1&&bit_test(data[0],4)==0) bit_clear(armado,2);
  32.          if(bit_test(data[0],5)==0&&bit_test(data[0],4)==1) bit_set(armado,2);
  33.          if(bit_test(data[0],3)==1&&bit_test(data[0],2)==0) bit_clear(armado,1);
  34.          if(bit_test(data[0],3)==0&&bit_test(data[0],2)==1) bit_set(armado,1);
  35.          if(bit_test(data[0],1)==1&&bit_test(data[0],0)==0) bit_clear(armado,0);
  36.          if(bit_test(data[0],1)==0&&bit_test(data[0],0)==1) bit_set(armado,0);
  37.          printf("valor: %x \n\r", armado);
  38.       }
  39.    }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement