Saludos. Mi problema es el siguiente:
Estoy realizando un medidor de energía utilizando los ADC del PIC16F88 y quiero mostrar los valores medidos, tanto por una LCD, como enviarlo a la PC a través del puerto serial, pero cuando uso la instrucción HSEROPEN, la LCD deja de mostrar caracteres, si la elimino del programa, la LCD funciona perfectamente.
Tengo que usar esa instrucción obligatoriamente porque quiero capturar lo que haya en el buffer y para eso uso el HSERGET, porque la comunicación serial por software no tiene una instrucción para eso. (Por lo menos, no la conozco)
Aquí el código que uso:
Estoy realizando un medidor de energía utilizando los ADC del PIC16F88 y quiero mostrar los valores medidos, tanto por una LCD, como enviarlo a la PC a través del puerto serial, pero cuando uso la instrucción HSEROPEN, la LCD deja de mostrar caracteres, si la elimino del programa, la LCD funciona perfectamente.
Tengo que usar esa instrucción obligatoriamente porque quiero capturar lo que haya en el buffer y para eso uso el HSERGET, porque la comunicación serial por software no tiene una instrucción para eso. (Por lo menos, no la conozco)
Aquí el código que uso:
PHP:
Define LCD_BITS = 4
Define LCD_DREG = PORTB
Define LCD_DBIT = 4
Define LCD_RSREG = PORTA
Define LCD_RSBIT = 0
Define LCD_EREG = PORTA
Define LCD_EBIT = 2
OSCCON = 01110110b
ANSEL = 00001010b
Dim x As Byte 'variable para saludar
Dim corriente As Byte 'Corriente
Dim voltaje As Byte 'voltaje
Dim potencia As Single 'potencia
Dim orden As Byte 'comando desde pc
INTCON.7 = 1
INTCON.4 = 1
Hseropen 9600
Lcdinit LcdCurOff
Enable
x = 1
'MAIN
main:
'Saludos
If x = 1 Then
Gosub saludos
Endif
Hserget orden
Select Case orden
Case "b"
Hserout #potencia
EndSelect
Goto main
End
'Rutina de saludos inicial
saludos:
x = 2
Lcdcmdout LcdLine1Pos(2)
Lcdout "Red Electrica"
WaitMs 1000
Lcdcmdout LcdLine2Pos(5)
Lcdout "Virtual"
WaitMs 1000
Lcdcmdout LcdClear
Lcdcmdout LcdLine1Pos(3)
Lcdout "Ing. Adames"
WaitMs 1000
Lcdcmdout LcdLine2Pos(2)
Lcdout "Ing. Hernandez"
WaitMs 1000
Lcdcmdout LcdClear
Return
On Interrupt
Save System
INTCON.7 = 0
INTCON.4 = 0
Adcin 1, corriente
Adcin 3, voltaje
potencia = corriente * voltaje
Lcdcmdout LcdHome
Lcdout "Potencia:"
Lcdcmdout LcdLine2Home
Lcdout #potencia
INTCON.INT0IF = 0
INTCON.7 = 1
INTCON.4 = 1
Resume
Última edición por un moderador: