EJN°2: Codificacion AMI de un mensaje

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }