Comunicación Serial PIC18F4550 con proton.

#1
Hola a todos espero que estén bien.

siempre he visto el foro y encontrado muchas respuestas a mis preguntas, creo que esta es la primera que hago, siempre me ha gustado la parte de radio y la mayoría del tiempo estoy en esa sección, últimamente me he propuesto experimentar con un PIC18F4550 y la verdad me ha ido algo mal :confused: no se nada de programación es la pura y mera verdad, lo que medio hacia lo hacia en PBP y eran cosas como encender un led, ahora he tomado proton y me ha gustado mucho, ensaye un altímetro en proteus y me ha salido a la perfeccion :aplauso: pero ahora quería hacer eso mismo pero en ves de mostrar los datos en un lcd quería transmitirlos vía RS232,

les dejo el código del altímetro que ensaye y les agradecería que me explicaran como hacer para que los mismos datos que muestro en el lCD se transmitan de manera serial :unsure:

no tengo idea de como se trabaja con el puerto serie por hardware que fue lo que lei por hay que me ha dejado bastante confundido, de antemano les agradezco por la ayuda y deseo que todos ustedes tengan muchos éxitos.

saludos-

PHP:
Device = 18F4550 ;
Xtal 20 ;

LCD_DTPin PORTD.4 ; directivas de configuracion para el lcd
LCD_RSPin PORTD.2 ;
LCD_ENPin PORTD.3 ;
LCD_Interface 4 :
LCD_Lines 2 ;
LCD_Type 0 ;

Declare Adin_Res 10 ;  declaraciones ADC
Declare Adin_Stime 50 ;

ADCON1 = 141 
TRISA  = %00000001 ;
ADCON1 = %10000000 ;

Symbol Vs = 5.1 ;
Symbol P_0 = 1013.3 ;

Dim Vadc As Word ;
Dim Vout As Float ;
Dim LogA As Float ;
Dim DefP As Float ;
Dim H As Float ;
Dim P As Float ;
Dim HP As Float ;
Dim C As Float ;
Dim B As Float ;
Dim M1 As Float ;
Dim M2 As Float ;

 Cls 
 
inicio:
 GoSub Get_Vout;
 DelayMS 10 ;
 GoSub Lectura_Presion ;
 DelayMS 10 ;
 GoSub Lectura_Altura ;
 DelayMS 10 ;
 GoSub Visualizar ;
 DelayMS 10 ;
GoTo inicio ;
 
Get_Vout: ;
 Vadc = ADIn 0 ;
 Vadc = Vadc >> 6 ;
 Vout = (Vadc * 5)/1024 ;
Return
 
Lectura_Presion:
 C = .095*Vs ;
 B = .009*Vs ;
 P = (Vout + C)/(B) ;
Return ;

Lectura_Altura:
 HP = P * 10 ;
 DefP = P_0/HP ;
 LogA = Log DefP ;
 M1 = 8430.153 * LogA ;
 M2 = (LogA * .095)+1 ;
 H = M1/M2 ;
Return  

Visualizar:
 Print At 1,1,"(KPa):",Dec1 P;
 DelayMS 500 ;
 Print At 2,1,"Altitud:",Dec1 H;
 DelayMS 1000 ;
Return;
 
Última edición:
#2
Saludos.
Como necesitas enviar y recibir dos datos, aquí adjunto un ejemplo de como podrías lograrlo.
El ejemplo muestra como enviar y recibir dos bytes a la vez, se puede hacer con más, pero lo hice para mostrar 2
También muestro como hacerlo por software y por hardware.

Recomendaciones sobre el lenguaje:
En PICBasic, no es necesario terminar cada instrucción con punto y coma. (Proton usa PICBasic)
Usar ' ; y Rem en este lenguaje sirven solo para hacer comentarios. (Rem = Remark ó Remember)
Trata de establecer las variables del tamaño para el cual van a ser usadas. (Ahorras memoria)
Declarar los fuses adecuados para el trabajo del PIC es importante. (En el ejemplo muestro como hacerlo)
Si necesitas saber más acerca de este lenguaje, aquí en el Foro existe un tutorial de Proton

Suerte.
 

Adjuntos

#3
Muchísimas gracias por las recomendaciones y por el ejemplo ahora mismo me pongo a estudiar las instrucciones y veo como las aplico a mis experimentos.

un abrazo grande!