Hola, logre solucionar parcialmente mi problema anterior: cuando llamo a la subrutina para que lea el puerto serie y haga la comunicacion, no puedo hacer que el micro lea la entrada en la que esta conectado el pulsador.
Si anulo la linea del puerto serie, anda el led. Cuando la habilito, el led nunca prende.
Alguna idea? Por favor, necesito ayuda... Me imagino que debe ser alguna pavada, porque en si, las subrutinas por separado andan bien.
Gracias de antemano
INCLUDE "MODEDEFS.BAS"
;**********************************************
; DEFINO LAS VARIABLES QUE VOY A USAR
;**********************************************
temp VAR word
adc VAR word
ser var WORD
aux var word
boton var byte
TRISA = 1
TRISB = 1
TRISC = %00000001
TRISD = 0
TRISE = 1
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTC
DEFINE LCD_EBIT 5
DEFINE LCD_BITS 8
DEFINE LCD_LINES 2
DEFINE ADC_BITS 10
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 50
define BUTTON_PAUSE 50
ADCON1 = %00000010
adc=0
boton= 0
LOW portc.0
LOW portc.1
low portc.2
main:
'Si comento la primera linea, anda lo del led. Sino, anda el envio serie pero no lo del led
gosub serie
gosub entrada
goto main
entrada: 'prende o apaga un led conectado a RB5
input portb.5
if (portb.5 = 0) then
portc.2 = 1
else
portc.2 = 0
endif
return
serie:
serin PORTC.7, T9600, ser
'llama a subrutinas que leen el valor de un LM35, lo muestra en un display y lo envia via serie
if (ser == "r") then gosub releaser
if (ser == "c") THEN gosub cisterna
if (ser == "m") THEN gosub manga
if (ser == "s") THEN
gosub sala
else
goto main
endif
return
cisterna:
ADCON0 = %00000001
adcin 0,adc
aux= adc / 128
serout PORTC.6, T9600, [#aux]
pause 100
LCDOUT $fe,1,"Temp. Cisterna"
lcdout $fe,$C0,#aux,"~C"
pause 100
adc=0
serin PORTC.7, T9600, ser
if (ser == "p") THEN
gosub serie
endif
ser=0
gosub cisterna
END
*Las otras subrutinas estan todas, pero son iguales a "cisterna". No me parecio necesario subirlas, pero si las precisan avisan y listo