Advertisement
Electgpl

PIC - RTTY Baudot

Aug 29th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. #include <16F84A.h>
  2. #fuses XT
  3. #use delay(clock=4000000)
  4. #define AUDIO PIN_A2
  5. freq1(){        //625us + 625us = 1250us = 800Hz
  6.    int q=0;
  7.    while(q<17){ //22ms / 1250us = 17 veces.
  8.       output_low(AUDIO);
  9.       delay_us(625);
  10.       output_high(AUDIO);
  11.       delay_us(625);
  12.       q++;
  13.    }  
  14. }
  15. freq0(){        //515us + 515us = 1030us = 970Hz
  16.    int p=0;
  17.    while(p<21){ //22ms / 1030us = 21 veces.
  18.       output_low(AUDIO);
  19.       delay_us(515);
  20.       output_high(AUDIO);
  21.       delay_us(515);
  22.       p++;
  23.    }  
  24. }
  25. void main(){
  26.    int i,j;    
  27.    byte valor;
  28.    byte const bitMask[8]={1,2,4,8,16,32,64,128};
  29.    byte const ByteDatosSalida[18]={
  30.       0b11001000, //11 00100 0, STOP STOP ESPACIO START
  31.       0b11001000, //11 00100 0, STOP STOP ESPACIO START
  32.       0b11000010, //11 00001 0, STOP STOP "E" START
  33.       0b11100100, //11 10010 0, STOP STOP "L" START
  34.       0b11000010, //11 00001 0, STOP STOP "E" START
  35.       0b11011100, //11 01110 0, STOP STOP "C" START
  36.       0b11100000, //11 10000 0, STOP STOP "T" START
  37.       0b11110100, //11 11010 0, STOP STOP "G" START
  38.       0b11101100, //11 10110 0, STOP STOP "P" START
  39.       0b11100100, //11 10010 0, STOP STOP "L" START
  40.       0b11001000, //11 00100 0, STOP STOP ESPACIO START
  41.       0b11001000, //11 00100 0, STOP STOP ESPACIO START
  42.       0b11010100, //11 01010 0, STOP STOP "R" START
  43.       0b11100000, //11 10000 0, STOP STOP "T" START
  44.       0b11100000, //11 10000 0, STOP STOP "T" START
  45.       0b11101010, //11 10101 0, STOP STOP "Y" START
  46.       0b11001000, //11 00100 0, STOP STOP ESPACIO START
  47.       0b11001000};//11 00100 0, STOP STOP ESPACIO START
  48.    while(true){
  49.       delay_ms(3000);              //delay de repeticion 3s
  50.       i=0;
  51.       while(i<18){                 //cantidad de caracteres 18
  52.          valor=ByteDatosSalida[i]; //carga valor con dato de salida
  53.          for(j=0;j<8;j++){         //recorre los 8 bit del baudot
  54.             if(valor&bitMask[j])   //aplica la mascara
  55.                freq0();            //si es verdadero envia 970Hz
  56.             else
  57.                freq1();            //si es falso envia 800Hz
  58.          }i++;
  59.       }
  60.    }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement