Juan Agustin Otero
/
CodificacionAMIv2
EJN°2: Codificacion AMI de un mensaje
main.cpp@0:ef66ab16c9c3, 2018-06-05 (annotated)
- Committer:
- JAgustinOtero
- Date:
- Tue Jun 05 23:28:54 2018 +0000
- Revision:
- 0:ef66ab16c9c3
Ejercicio N?2:; Codificacion AMI de un mensaje
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JAgustinOtero | 0:ef66ab16c9c3 | 1 | #include "mbed.h" |
JAgustinOtero | 0:ef66ab16c9c3 | 2 | #define bps 9600 |
JAgustinOtero | 0:ef66ab16c9c3 | 3 | #define V 1/9600 |
JAgustinOtero | 0:ef66ab16c9c3 | 4 | #define BSTOP 2 |
JAgustinOtero | 0:ef66ab16c9c3 | 5 | #define CBITS 8 |
JAgustinOtero | 0:ef66ab16c9c3 | 6 | DigitalOut LEDR(LED1); |
JAgustinOtero | 0:ef66ab16c9c3 | 7 | DigitalOut LEDV(LED2); |
JAgustinOtero | 0:ef66ab16c9c3 | 8 | DigitalOut VposTx(PTB0); |
JAgustinOtero | 0:ef66ab16c9c3 | 9 | DigitalOut VnegTx(PTB1); |
JAgustinOtero | 0:ef66ab16c9c3 | 10 | DigitalOut DatoO(PTB2); |
JAgustinOtero | 0:ef66ab16c9c3 | 11 | AnalogOut OUT (PTE30); |
JAgustinOtero | 0:ef66ab16c9c3 | 12 | |
JAgustinOtero | 0:ef66ab16c9c3 | 13 | unsigned char var_aux=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 14 | unsigned char var_pol=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 15 | unsigned char dato[12]= {'T','R','A','N','S','M','I','S','I','O','N','\0'}; |
JAgustinOtero | 0:ef66ab16c9c3 | 16 | unsigned char i=0,n=0,hab=1; |
JAgustinOtero | 0:ef66ab16c9c3 | 17 | |
JAgustinOtero | 0:ef66ab16c9c3 | 18 | void transmisionAMI(unsigned char dato[]); |
JAgustinOtero | 0:ef66ab16c9c3 | 19 | //void recepcionAMI(unsigned char dato[]); |
JAgustinOtero | 0:ef66ab16c9c3 | 20 | void TxAMI(void); |
JAgustinOtero | 0:ef66ab16c9c3 | 21 | void Hab (void); |
JAgustinOtero | 0:ef66ab16c9c3 | 22 | Ticker Tx; |
JAgustinOtero | 0:ef66ab16c9c3 | 23 | enum{UnoPositivo,UnoNegativo,Cero}; |
JAgustinOtero | 0:ef66ab16c9c3 | 24 | enum{Positivo,Negativo}; |
JAgustinOtero | 0:ef66ab16c9c3 | 25 | unsigned char ME_Polaridad_estado=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 26 | unsigned char ME_Dato_estado=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 27 | void ME_Polaridad(void); |
JAgustinOtero | 0:ef66ab16c9c3 | 28 | void Dato(void); |
JAgustinOtero | 0:ef66ab16c9c3 | 29 | int main() |
JAgustinOtero | 0:ef66ab16c9c3 | 30 | { |
JAgustinOtero | 0:ef66ab16c9c3 | 31 | Tx.attach(&TxAMI,V); |
JAgustinOtero | 0:ef66ab16c9c3 | 32 | while(1) { |
JAgustinOtero | 0:ef66ab16c9c3 | 33 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 34 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 35 | |
JAgustinOtero | 0:ef66ab16c9c3 | 36 | void TxAMI(void) |
JAgustinOtero | 0:ef66ab16c9c3 | 37 | { |
JAgustinOtero | 0:ef66ab16c9c3 | 38 | transmisionAMI(dato); |
JAgustinOtero | 0:ef66ab16c9c3 | 39 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 40 | void transmisionAMI(unsigned char dato[]) |
JAgustinOtero | 0:ef66ab16c9c3 | 41 | { |
JAgustinOtero | 0:ef66ab16c9c3 | 42 | if(i < 12) { |
JAgustinOtero | 0:ef66ab16c9c3 | 43 | var_aux = (dato[i] >> n) & 1; |
JAgustinOtero | 0:ef66ab16c9c3 | 44 | DatoO = var_aux; |
JAgustinOtero | 0:ef66ab16c9c3 | 45 | ME_Polaridad();//esta funcion se encarga de variar la polaridad de los "1" logicos |
JAgustinOtero | 0:ef66ab16c9c3 | 46 | Dato();//esta funcion se encarga de variar la salida en funcion a la polaridad que determina la funcion anterior y a una variable que depende de el estado logico de cada bit del mensaje original |
JAgustinOtero | 0:ef66ab16c9c3 | 47 | n++; |
JAgustinOtero | 0:ef66ab16c9c3 | 48 | if(n==CBITS) { |
JAgustinOtero | 0:ef66ab16c9c3 | 49 | n=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 50 | i++; |
JAgustinOtero | 0:ef66ab16c9c3 | 51 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 52 | } else if(i>=12){ |
JAgustinOtero | 0:ef66ab16c9c3 | 53 | n=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 54 | i=0; |
JAgustinOtero | 0:ef66ab16c9c3 | 55 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 56 | |
JAgustinOtero | 0:ef66ab16c9c3 | 57 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 58 | void ME_Polaridad(){ |
JAgustinOtero | 0:ef66ab16c9c3 | 59 | switch(ME_Polaridad_estado){ |
JAgustinOtero | 0:ef66ab16c9c3 | 60 | case Positivo: |
JAgustinOtero | 0:ef66ab16c9c3 | 61 | var_pol = 1; |
JAgustinOtero | 0:ef66ab16c9c3 | 62 | ME_Polaridad_estado=Negativo; |
JAgustinOtero | 0:ef66ab16c9c3 | 63 | case Negativo: |
JAgustinOtero | 0:ef66ab16c9c3 | 64 | var_pol = 0; |
JAgustinOtero | 0:ef66ab16c9c3 | 65 | ME_Polaridad_estado=Positivo; |
JAgustinOtero | 0:ef66ab16c9c3 | 66 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 67 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 68 | |
JAgustinOtero | 0:ef66ab16c9c3 | 69 | void Dato(){ |
JAgustinOtero | 0:ef66ab16c9c3 | 70 | switch(ME_Dato_estado){ |
JAgustinOtero | 0:ef66ab16c9c3 | 71 | case UnoPositivo: |
JAgustinOtero | 0:ef66ab16c9c3 | 72 | |
JAgustinOtero | 0:ef66ab16c9c3 | 73 | if(var_aux==0){ |
JAgustinOtero | 0:ef66ab16c9c3 | 74 | ME_Dato_estado=Cero; |
JAgustinOtero | 0:ef66ab16c9c3 | 75 | OUT=0.5;} |
JAgustinOtero | 0:ef66ab16c9c3 | 76 | if(var_aux==1 && var_pol == 0){ |
JAgustinOtero | 0:ef66ab16c9c3 | 77 | ME_Dato_estado=UnoNegativo; |
JAgustinOtero | 0:ef66ab16c9c3 | 78 | OUT=0;} |
JAgustinOtero | 0:ef66ab16c9c3 | 79 | case UnoNegativo: |
JAgustinOtero | 0:ef66ab16c9c3 | 80 | if(var_aux==0){ |
JAgustinOtero | 0:ef66ab16c9c3 | 81 | ME_Dato_estado=Cero; |
JAgustinOtero | 0:ef66ab16c9c3 | 82 | OUT=0.5;} |
JAgustinOtero | 0:ef66ab16c9c3 | 83 | if(var_aux==1 && var_pol == 1){ |
JAgustinOtero | 0:ef66ab16c9c3 | 84 | ME_Dato_estado=UnoPositivo; |
JAgustinOtero | 0:ef66ab16c9c3 | 85 | OUT=1;} |
JAgustinOtero | 0:ef66ab16c9c3 | 86 | case Cero: |
JAgustinOtero | 0:ef66ab16c9c3 | 87 | OUT=0.5; |
JAgustinOtero | 0:ef66ab16c9c3 | 88 | if(var_aux==1 && var_pol == 1){ |
JAgustinOtero | 0:ef66ab16c9c3 | 89 | ME_Dato_estado=UnoPositivo; |
JAgustinOtero | 0:ef66ab16c9c3 | 90 | OUT=1;} |
JAgustinOtero | 0:ef66ab16c9c3 | 91 | if(var_aux==1 && var_pol == 0){ |
JAgustinOtero | 0:ef66ab16c9c3 | 92 | ME_Dato_estado=UnoNegativo; |
JAgustinOtero | 0:ef66ab16c9c3 | 93 | OUT=0;} |
JAgustinOtero | 0:ef66ab16c9c3 | 94 | } |
JAgustinOtero | 0:ef66ab16c9c3 | 95 | } |