aqui el codigo del pic yo hice la cala con un pic16f877a y el sistema funciona mis ejemplo son hechos y montados, no me gusta hacerlos virtualmente, por que me an fallado, algunos
bueno, el ejemplo es sencillo utiliza lo que es el adc del pic usando para leer la lectura del sensor lm35 ,el puerto serie del pic via hardware y la interrupcion del pic en modo resepcion ya que es la que mejor me interesa para no estar checando el puerto del pic tan seguido y asi no se me pierde ninguna informacion
AllDigital
'CONFIGURACION DEL PUERTOS
'------------------------------------------
TRISA = %001011
TRISC = %10000000
TRISD = %00000011
'------------------------------------------
'CONFIGURACION DE ADC
'------------------------------------------
Define ADC_CLOCK = 3
Define ADC_SAMPLEUS = 50
ADCON0 = 0x00
ADCON1 = %10000100
'------------------------------------------
'CONFIGURACION DE INTERUPCION POR RECEPCION
'------------------------------------------
INTCON.GIE = 1
INTCON.PEIE = 1
PIE1.RCIE = 1
'------------------------------------------
'CONFIGURACION DE LCD
'------------------------------------------
Define LCD_BITS = 4
Define LCD_DREG = RB
Define LCD_DBIT = 4
Define LCD_RSREG = RB
Define LCD_RSBIT = 3
Define LCD_EREG = RB
Define LCD_EBIT = 2
Define LCD_COMMANDUS = 2000
Define LCD_DATAUS = 100
Define LCD_INITMS = 100
Lcdinit 0
'------------------------------------------
'CONFIGURACION DE VARIABLES DE TEMPERATURA
'------------------------------------------
Dim a1 As Word
Dim a2 As Byte
Dim a3 As Word
Dim a4 As Byte
a1 = 0
a2 = 0
a3 = 0
a4 = 0
'------------------------------------------
'CONFIGURACION DE VARIABLES DE RECEPCION
'------------------------------------------
Dim dato As Byte
dato = 0
'------------------------------------------
'COMUNICACION SERIAL 9600
'------------------------------------------
Hseropen 9600
'------------------------------------------
'CONFIGURACION PUERTO A CERO
'------------------------------------------
RD.3 = 0
RD.4 = 0
'------------------------------------------
inicio:
Lcdcmdout LcdLine1Home
Adcin 0, a1
a2 = a1 / 2
Lcdout "C " #a2
Hserout "tempin", #a2
WaitMs 5
Lcdcmdout LcdLine1Pos(7)
Adcin 1, a3
a4 = a3 / 2
Lcdout "C " #a4
Hserout "tempou", #a4
WaitMs 5
'CONTROL DE LAS IMAGENES VISUAL
'------------------------------------------
If RD.0 = 1 Then
Hserout "f1on"
Endif
If RD.0 = 0 Then
Hserout "f1of"
Endif
If RD.1 = 1 Then
Hserout "f2on"
Endif
If RD.1 = 0 Then
Hserout "f2of"
Endif
'------------------------------------------
Goto inicio
End
On Interrupt
'------------------------------------------
PIE1.RCIE = 0
PIR1.RCIF = 0
Hserin dato
'LECTURA DE LA APLICACION BOTONES
'------------------------------------------
If dato = "A" Then
RD.3 = 1
dato = 0
Endif
If dato = "B" Then
RD.3 = 0
dato = 0
Endif
If dato = "C" Then
RD.4 = 1
dato = 0
Endif
If dato = "D" Then
RD.4 = 0
dato = 0
Endif
'------------------------------------------
PIE1.RCIE = 1
Resume