Autor Tema: Ayuda con PIC4620, comunicacion serie y lectura de puertos  (Leído 1649 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado arielodell

  • PIC10
  • *
  • Mensajes: 2
Ayuda con PIC4620, comunicacion serie y lectura de puertos
« en: 27 de Febrero de 2009, 10:27:43 »
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

Código: [Seleccionar]
   
    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 :)
"Los monos son demasiado buenos para que el hombre pueda descender de ellos."
Nietzche