Autor Tema: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A  (Leído 16156 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Fello

  • PIC10
  • *
  • Mensajes: 4
Casualmente encontré este foro, trato de buscar un programa que me permita observar la temperatura en un dos displays o una pantalla LCD. La temperatura la obtengo de un LM35, usare dos amplificadores operacionales y un 16f877A, el programa deseado es en lenguaje ensamblador.

Mi correo es: areyes@jumex.com.mx

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #1 en: 25 de Junio de 2007, 10:14:16 »
Fello:

En la parte superior derecha de la página del foro hay un icono de Una Lupa, junto a él hay un Campo de Edición vacío y junto a éste un Botón con el texto Buscar.

Escribe la palabra LM35 en el campo de edición y pulsa, con el ratón, sobre el botón Buscar.

Te aparecerán centenares de Post acerca del LM35, caracteristicas técnicas, su conexionado, el uso y disfrute del LM35, programas que usan y abusan del LM35, hechos en varios tipos de C, en ASM o en Nipple, para PIC's de 8 y 16 bits, con el 16F877, con el 16F84, con el 18F876A incluso .... con el LM35 sólo o acompañado de LDR's, con y sin voltajes de referencia, con y sin operacionales .....

Todo lo que usted quiso saber sobre el LM35 y nunca (hasta ahora) se atrevió a preguntar.

En fin, que tampoco se ha leído usted las Reglas del Foro de las cuales la primera es .... Busca antes de preguntar (es una lástima que tenga que ser así pero por algún lado tenemos que empezar)

« Última modificación: 25 de Junio de 2007, 10:19:09 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Giovanny

  • PIC12
  • **
  • Mensajes: 97
    • Supercomponentes
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #2 en: 25 de Junio de 2007, 17:04:42 »
totalmente de acuerdo redpic, así debe ser
        Saludos desde Colombia! Que hermoso país....

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #3 en: 25 de Junio de 2007, 17:18:30 »
Hola Fello acá te dejo un link que te puede servir, por lo demás coincido con el amigo Redpic.
suerte con la búsqueda y con los libros. ;-)

http://www.todopic.com.ar/foros/index.php?topic=13389.msg77809#msg77809
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #4 en: 25 de Junio de 2007, 17:24:48 »
Macho les has mandado a todos un privado con tu 'necesidad' ??? que barbaridad...............................

Desconectado Normando

  • PIC10
  • *
  • Mensajes: 12
    • UNIXLAN
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #5 en: 26 de Junio de 2007, 11:31:24 »
Si, a mi tambien me mando un privado.....o ¿pirado?....cómo se dice?
¿Es usted un desarrollador argentino?

Visite http://www.daie.com.ar y amplíe sus posibilidades...

¿Le interesan las macros?

http://www.daie.com.ar/comunidad

Desconectado Fello

  • PIC10
  • *
  • Mensajes: 4
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #6 en: 26 de Junio de 2007, 17:29:54 »
RedPic, veo que eres moderador de este foro, y das por hecho que no leí las reglas, pero no es así, he leido cada una de ellas y también estuve revisando algo alrededor del LM35, pero no encontré lo que buscaba, por eso extendí mi pregunta en público ya que en privado no encontré respuestas favorables.

flacoclau gracias por el linck, me es de gran ayuda.

normando y J1M entiendo su incapacidad de poderme ayudar, gracias de todos modos.

Aprecio cualquiér ayuda o linck que me puedan proporcionar.

Fello

Desconectado mariano_pic

  • PIC18
  • ****
  • Mensajes: 498
    • Software Electronica Microncontroladores
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #7 en: 26 de Junio de 2007, 18:53:03 »
Parese que el amigo fello nesesita que alguien le haga el trabajo.

Pero hay que recordar que este es un foro de alluda en donde las personas hasen preguntas aserca de problemas puntuales que tengan. Y debe de entender que nadie va ha ponerse a resolverle todo un trabajo en especial.
Muchas personas que estan aca tienen ocupaciones trabajan o estudian y estan dispuestos a colaborar pero para obtener la ayuda hay que saber pedirla hasiendo una pregunta consisa y puntual, o buscar primero por todo el foro.

Amigo debes ponerte a estudiar, estoy seguro qu puedes resolver tu problema.

un saludo

Necesitas ayuda para tu proyecto electronico?
buscame, tal ves pueda colaborarte.
Blog: http://electronicosembebidos.blogspot.com.co/
mail: electronicosembebidos@gmail.com
Mi grupo de facebook: https://www.facebook.com/groups/ProgramandoPics/

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #8 en: 26 de Junio de 2007, 19:53:12 »
Won't you help to sing
these songs of freedom?
'Cause all I ever have...
Redemption songs,
Redemption songs.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #9 en: 27 de Junio de 2007, 02:12:39 »
... un programa que me permita observar la temperatura en un dos displays o una pantalla LCD. La temperatura la obtengo de un LM35, usare dos amplificadores operacionales y un 16f877A, el programa deseado es en lenguaje ensamblador.

Bien, Fello, bien ... leo que has leído las normas y ya has buscado sin encontrar, entonces podemos continuar ...

¿Que parte del programa no sabes hacer?
¿La lectura del LM35 mediante una conversión AD? ¿Las conversiones AD en general o la del LM35 en particular?
¿El driver para un par de Displays de 7 segmentos? ¿Cátodo o Ánodo común? ¿Con o sin driver?
¿el del LCD? ¿16x2? ¿20x4? ¿Gráfico? ¿Paralelo con 4 u 8 bits? ¿SPI?
¿Conoces cada uno de estos temas pero te falta integrarlo todo en uno?
¿Conoces el 16F877A, sus posibilidades y sus carencias?
¿Sabes ensamblador de PIC?
¿Tienes las herramientas Soft, (MPLAB y MASM) y Hard (Programador de PIC's) para hacer el trabajo?

¿Qué has hecho hasta ahora y qué te falta?

Porque sería mucha casualidad, rayana a la imposibilidad estádistica, que alguno de nuestros amables foreros tenga realizado un programa en ensamblador para leer la temperatura con un LM35 con dos operacionales y que muestre el resultado en un par de displays o en un LCD usando un 16F877A esperando a que alguien lo pida y pueda gentílmente ofrecerselo para su descarga.

Es mucho mas probable que haya que hacerlo. Y sospecho que entre nuestros mas de ocho mil foreros hay alguno que otro que sabría hacerlo y que podría ayudarte en tu tarea si tienes la gentileza de decirnos qué asunto es el que impide completar tu proyecto.

Un saludo y adelante, que tú puedes.  :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #10 en: 27 de Junio de 2007, 16:28:01 »
fello que necesitas?
que no entiendes?
cual es tu nivel de estudios en pic?
hasta donde vas en el programa?
que caracterisdticas debe tener el programa?
??????????????

saludos

Desconectado Trev_11

  • PIC10
  • *
  • Mensajes: 44
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #11 en: 29 de Junio de 2007, 17:42:16 »
Hola amigos,esta es mi primera participación en este foro...,mi inkietud es la sig.:estoy estudiando el módulo A/D del pic16f877 y lo que estoy haciendo como primer paso de un proyecto futuro para controlar la temperatura(mi idea es manejar una fuente de frio/calor incorporando un teclado,para programar las temperaturas limite,y un LCD como  interface de programación y de constante visualización de la temperatura entregada por un LM335)es visualizar el código cargado en el par de regitros ADRES en tres displays de 7 segmentos,lo ke hago es pasar el valor de ADRES a decimal con la sig.rutina:
CENTENAS   movlw         .100
                  subwf          DATO,W                     ;DATO-100=W.
                  btfss           STATUS,C                   ;¿DATO es menor ke .100?
                  goto           DECENAS                    ;Si.
                  movwf        DATO                         ;No,salva el resto.
                  incf            centena,F
                  goto           CENTENAS
DECENAS    movlw          .10
                  subwf         DATO,W
                  btfss          STATUS,C                   ;¿DATO es menor ke .10?
                  goto           UNIDADES                   ;Si.
                  movwf        DATO                         ;Salva el resto.
                  incf           decena,F
                  goto           DECENAS
UNIDADES  movf           DATO,W
                  movwf          unidad
                  clrf           DATO
                  movlw          .0
                  subwf          ADRESH,W
                  btfsc          STATUS,Z                   ;¿ADRESH=.0?
                  goto           MUESTRA                    ;Si,no agrega nada.
bien ese seria un primer paso..ahora bien no se como usar los datos de estos 3 registros sin tener ke realizar una multitud de comparaciones usando el carry para poder visualizar en los display valores de temperatura(digamos enteros en principio)ke sean función de estos valores..si alguien podria darme una idea les agradeceria mucho... :)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #12 en: 30 de Junio de 2007, 11:42:56 »
Hola Trev_11, primero una recomendación, si en algun momento piensas ampliar hacia el uso de decimales te recomendaría que lo hagas desde un principio, ya que lluego es muy dificil "añadir" este detalle a un programa, claro está a menos que tengas pensado hacer todo nuevamente.

A tú pregunta:

Tú con la converción de binario a decimal ya tienes 3 datos: centena, decena y unidad, pues para representar esos 3 datos como un solo numero en un display LCD solo tienes que agregarle el valor 48 (decimal) a cada uno de ellos para convertirlos en un código ASCII que pueda interpretar el display, por ejemplo:

movlw        .48
addwf         centenas,W
movwf        XXXX
call             display_dato

Primeramente cargas el decimal 48 en el reguistro W, luego sumas "centena" y W, el resultado lo almacenas en W para no alterar el valor de centenas, como tienes el resultado en W lo cargas al reguistro XXXX y por ultimo llamas a la sub-rutina que se encarga de enviar el dato presente en XXXX al display para que este sea representado.

Entonces si realisas este paso para los 3 reguistros que tenías luego de la convercion a BCD y representas los datos en posiciones consecutivas del display, en el mismo tendrás en la posición X= centenas, X+1= decenas y X+2= unidades, por lo tanto ya te queda el valor que tenías en el reguistro ADRES representado en el display de manera decimal.

Yo acostumbro hacerlo de esta manera:

Código: ASM
  1. movlw   .48             ;cargo el valor 48 decimal en el reguistro W
  2.         addwf   centena,W       ;sumo W con el reguistro centena, el resultado lo almaceno en W
  3.         call    LCD_DATO        ;llamo a la sub-rutina LCD_DATO
  4.         movlw   .48
  5.         addwf   decena,W
  6.         call    LCD_DATO
  7.         movlw   .48
  8.         addwf   unidad,W
  9.         call    LCD_DATO

LCD_DATO es la sub-rutina de envio de un dato al display, esta sub-rutina toma el dato a enviar del reguistro W.

Espero te sea de ayuda.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Trev_11

  • PIC10
  • *
  • Mensajes: 44
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #13 en: 30 de Junio de 2007, 14:33:54 »
Si...gracias Charly_29,bueno me parece bien lo ke dices,pero mi idea por ahora es no agregar el LCD hasta asegurarme de ke funciona con displays comunes para no complicar el programa(ya ke soy muy malo con los diagrama de flujo),yo hice mas o menos algo asi:mi idea era trabajar con el LM335 y representar en ultima instancia el valor de Tº en dos displays de 7 segmentos,numeros enteros sin decimales nada mas y positivos,digamos entre 0ºc y 50ºc,por ahora ke sea nada mas un sensor sin tomar ninguna decisión,a esto no he llegado aun,pero he podido representar en 3 displays de 7 segmentos el valor ke contiene el par de registros ADRES de 10 bits,mi programa terminado es el sig.:

;*****************************************************************************************************************
;Descripción                                                                                                     *
;*****************************************************************************************************************



;*****************************************************************************************************************
;Definiciones,vectores,blokes,configuración de puertos y macros                                                  *
;*****************************************************************************************************************
                   
                  list           p=16f877
                  #include       <p16f877.inc>                     
                  RADIX          HEX
                  GO_DONE        EQU        2               ;Indica si termino la conversión(0).
                  ADON           EQU        0               ;Pone en marcha el modulo(1).
                 

           
unidad            EQU    20
decena            EQU    21
centena           EQU    22
DATO              EQU    23
TIMER1            EQU    24


                 
                  org            0
                  goto           INICIO
                                   
BANCO0            macro                 
                  bcf            STATUS,RP0
                  bcf            STATUS,RP1
                  endm

BANCO1            macro
                  bsf            STATUS,RP0
                  bcf            STATUS,RP1
                  endm

BANCO2            macro
                  bcf            STATUS,RP0
                  bsf            STATUS,RP1
                  endm

BANCO3            macro
                  bsf            STATUS,RP0
                  bsf            STATUS,RP1
                  endm
                 
;*****************************************************************************************************************
;Progama principal.                                                                                              *
;*****************************************************************************************************************
                 
INICIO            BANCO1
                  clrf           TRISB
                  clrf           TRISC
                  clrf           TRISD
                  movlw          b'00001101'                ;RA0 es una entrada funcionará como AN0.
                  movwf          TRISA                      ;RA1-5 funcionaran como salidas para las ref.
                  call           T_ADQUISICIÓN
                  movlw          b'10001111'                ;Justificación a la derecha.
                  movwf          ADCON1                     ;RA0/AN0 y todo lo demás es I/O Digital.
                  BANCO0
                  movlw          b'00000001'                ;Pongo en marcha el modulo A/D y
                  movwf          ADCON0                     ;el canal analogo a emplear será AN0.
                  call           T_ADQUISICIÓN             
                  bsf            ADCON0,GO_DONE             ;El módulo A/D esta operativo
                  btfsc          ADCON0,GO_DONE             ;Ha finalizado la conversión?
                  goto           $-1
                  BANCO1
                  movf           ADRESL,W                                   
                  call           CONVERSION               
                  goto           INICIO
             
;*****************************************************************************************************************                 
;Subrutinas                                                                                                      *
;*****************************************************************************************************************

CONVERSION        BANCO0
                  clrf           unidad
                  clrf           decena
                  clrf           centena
                  movwf          DATO
CENTENAS          movlw          .100
                  subwf          DATO,W                     ;DATO-100=W.
                  btfss          STATUS,C                   ;¿DATO es menor ke .100?
                  goto           DECENAS                    ;Si.
                  movwf          DATO                       ;No,salva el resto.
                  incf           centena,F
                  goto           CENTENAS
DECENAS           movlw          .10
                  subwf          DATO,W
                  btfss          STATUS,C                   ;¿DATO es menor ke .10?
                  goto           UNIDADES                   ;Si.
                  movwf          DATO                       ;Salva el resto.
                  incf           decena,F
                  goto           DECENAS
UNIDADES          movf           DATO,W
                  movwf          unidad
                  clrf           DATO
                  movlw          .0
                  subwf          ADRESH,W
                  btfsc          STATUS,Z                   ;¿ADRESH=.0?
                  goto           MUESTRA                    ;Si,no agrega nada.
                  movlw          .1
                  subwf          ADRESH,W
                  btfsc          STATUS,Z                   ;¿ADRESH=.1?
                  goto           SUMA_256                   ;Si,suma 2 a centena,5 a decena y 6 a unidad.
                  movlw          .2
                  subwf          ADRESH,W
                  btfsc          STATUS,Z                   ;¿ADRESH=.2?
                  goto           SUMA_512                   ;Si,suma 5 a centena,1 a decena y 2 a unidad.
                  movlw          .7                         ;No,es = a .3,suma 7 a centena,6 a decena y 8 a unidad.
                  addwf          centena,F
                  movlw          .247                       
                  addwf          centena,W                  ;Comprueba si la suma resulto en mas de .10
                  btfss          STATUS,C                   
                  goto           $+2                        ;No resulto mayor ke .10.
                  movwf          centena                    ;Resulto mayor ke .10 deja el resto en centena.
                  movlw          .6
                  addwf          decena,F         
                  movlw          .247
                  addwf          decena,W
                  btfss          STATUS,C
                  goto           $+3                        ;No resulto ser mayor ke .10.
                  incf           centena,F                  ;La suma superó el .10,incrementa la centena y deja el resto
                  movwf          decena                     ;en decena.
                  movlw          .8 
                  addwf          unidad,F
                  movlw          .247
                  addwf          unidad,W
                  btfss          STATUS,C
                  goto           $+3
                  incf           decena
                  movwf          unidad
                  movlw          .247                       ;Se pregunta si desborda la decena.
                  addwf          decena,W             
                  btfss          STATUS,C
                  goto           MUESTRA                    ;No desbordó,sale.
                  movwf          decena
                  incf           centena,F   
                  goto           MUESTRA

SUMA_256          movlw          .2                         ;No,es = a .3,suma 2 a centena,5 a decena y 6 a unidad.
                  addwf          centena,F
                  movlw          .247                       
                  addwf          centena,W                  ;Comprueba si la suma resulto en mas de .10
                  btfss          STATUS,C                   
                  goto           $+2                        ;No resulto mayor ke .10.
                  movwf          centena                    ;Resulto mayor ke .10 deja el resto en centena.
                  movlw          .5
                  addwf          decena,F         
                  movlw          .247
                  addwf          decena,W
                  btfss          STATUS,C
                  goto           $+3                        ;No resulto ser mayor ke .10.
                  incf           centena,F                  ;La suma superó el .10,incrementa la centena y deja el resto
                  movwf          decena                     ;en decena.
                  movlw          .6 
                  addwf          unidad,F
                  movlw          .247
                  addwf          unidad,W
                  btfss          STATUS,C
                  goto           $+3
                  incf           decena
                  movwf          unidad
                  movlw          .247                       ;Se pregunta si desborda la decena.
                  addwf          decena,W             
                  btfss          STATUS,C
                  goto           MUESTRA                    ;No desbordó,sale.
                  movwf          decena
                  incf           centena,F   
                  goto           MUESTRA

SUMA_512          movlw          .5                         ;No,es = a .3,suma 5 a centena,1 a decena y 2 a unidad.
                  addwf          centena,F
                  movlw          .247                       
                  addwf          centena,W                  ;Comprueba si la suma resulto en mas de .10
                  btfss          STATUS,C                   
                  goto           $+2                        ;No resulto mayor ke .10.
                  movwf          centena                    ;Resulto mayor ke .10 deja el resto en centena.
                  movlw          .1
                  addwf          decena,F         
                  movlw          .247
                  addwf          decena,W
                  btfss          STATUS,C
                  goto           $+3                        ;No resulto ser mayor ke .10.
                  incf           centena,F                  ;La suma superó el .10,incrementa la centena y deja el resto
                  movwf          decena                     ;en decena.
                  movlw          .2 
                  addwf          unidad,F
                  movlw          .247
                  addwf          unidad,W
                  btfss          STATUS,C
                  goto           $+3
                  incf           decena
                  movwf          unidad
                  movlw          .247                       ;Se pregunta si desborda la decena.
                  addwf          decena,W             
                  btfss          STATUS,C
                  goto           MUESTRA                    ;No desbordó,sale.
                  movwf          decena
                  incf           centena,F     
MUESTRA           movf           unidad,W
                  call           TABLA
                  goto           $+3
                  movwf          DATO
                  comf           DATO,W
                  movwf          PORTC
                  movf           decena,W
                  call           TABLA
                  goto           $+3                        ;Voy a trabajar con dispay's de catodo comun.
                  movwf          DATO                       ;Aca invierto todo para trabajar con display's
                  comf           DATO,W                     ;de anodo comun.Si trabajara con display's de catodo comun
                  movwf          PORTB                      ;salto estas 2 instrucciones.
                  movf           centena,W
                  call           TABLA
                  goto           $+3
                  movwf          DATO
                  comf           DATO,W
                  movwf          PORTD
                  goto           INICIO
           
TABLA             addwf          PCL,F                      ;Suma al contador de programa el valor de offset,o sea,el valor del dígito.
                  retlw          3F                         ;0 en código de 7 segmentos.
                  retlw          06
                  retlw          5B
                  retlw          4F
                  retlw          66
                  retlw          6D
                  retlw          7D
                  retlw          07
                  retlw          7F
                  retlw          6F
                                                         
T_ADQUISICIÓN     movlw          .15                        ;Le sobredimensiono y listo.
                  movwf          TIMER1
                  decfsz         TIMER1,F
                  goto           $-1
                  return                                    ;Pasaron algunas decenas de µseg.,retorna.

                 

                  END

Ahora bien,del LM335 se ke entrega 10mv por ºK o sea ke
a 0º entrega 10mv*273=2.73V
y a 50º entregaria 10mv*(273+50)=3.23V lo cual pasado en terminos de ADRES me daria:
0ºC-------558 decimal aprox
50ºC-----660 decimal ,trazo la recta y obtengo esta ecuacion Cº=a*X+b=0.49*X-273,
bien ahora no se como haria para pasar esto a ºC ke pueda representar en 2 display de 7 segmentos
lo unico ke se me ocurre es juntar los datos de los 3 registros(centena,decena y unidad)en uno solo y asi poder seleccionar un
decimal BCD concreto de una tabla de 50 retlw....si ya han pasado por estos problemas y desean iluminarme el craneo un poco se los agradecere mucho... :)

Desconectado Fello

  • PIC10
  • *
  • Mensajes: 4
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #14 en: 04 de Julio de 2007, 16:09:16 »
RedPic
microcom

Anexo código

   LIST    P=16F877A
   #INCLUDE<P16F877A.INC>
   ;DECLARACION DE VARIABLES
   ;CONVERSOR ANALOGO DIGITAL DE    
   ;CONVERSOR DE TEMPERATURA

CBLOCK 0x20
   
   UNIDADES   
   DECENAS   
   CENTENAS   
   CONVERSION   
   REG1      
   REG2      
   REG3      
   PDel0       
   PDel1      
   NUMERO      

ENDC
      ;BITS CONVERSOR
      
 
   ORG   0
      GOTO   INICIO


   
   TABLA   ADDWF   PCL,1
      RETLW   B'11000000'
      RETLW   B'11111001'
      RETLW   B'10100100'
      RETLW   B'10110000'
      RETLW   B'10011001'
      RETLW   B'10010010'
      RETLW   B'10000010'
      RETLW   B'11111000'
      RETLW   B'10000000'
      RETLW   B'10011000'
      RETLW   B'10111111'
      RETLW   B'11111111'
   
   
   ; Code generated by PDEL  ver 1.0  on 17/04/2007 at 12:21:18 a.m.
   ; Description: Waits 5000 cycles
   ;-------------------------------------------------------------
   PDelay  movlw     .6        ; 1 set number of repetitions (B)
           movwf     PDel0     ; 1 |
   PLoop1  movlw     .207      ; 1 set number of repetitions (A)
           movwf     PDel1     ; 1 |
   PLoop2  clrwdt              ; 1 clear watchdog
           decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
           goto      PLoop2    ; 2 no, loop
           decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
           goto      PLoop1    ; 2 no, loop
   PDelL1  goto PDelL2         ; 2 cycles delay
   PDelL2  clrwdt              ; 1 cycle delay
           return              ; 2+2 Done
   
   
      INICIO

      BSF      STATUS,5
      CLRF   TRISB
      CLRF   TRISC
      MOVLW   B'00000011'
      MOVWF   PORTA
      CLRF   ADCON1
      BCF      STATUS,5
      MOVLW   B'00000000'
      MOVWF   ADCON0
      CLRF   PORTB
      CLRF   PORTC

   
CHUCHO
   
   MOVLW   b'01000001' ; Canal 0
   MOVWF   ADCON0
   BSF      ADCON0,2

CHUCHO1

   BTFSC   ADCON0,2
   GOTO   CHUCHO1
   MOVF   ADRESH,W
   MOVWF   REG1
   
FELLO

   MOVLW   b'01001001' ; Canal 1
   MOVWF   ADCON0
   BSF      ADCON0,2

   
CHUCHO2

   BTFSC   ADCON0,2
   GOTO   CHUCHO2
   MOVF   ADRESH,W
   MOVWF   REG2
   MOVF   REG2,W
   MOVWF   NUMERO
   CALL   UDC
   
FELLO1                   ;HACE LA RESTA ENTRE EL POTENCIOMETRO MENOS EL SENSOR

   movf    REG2,W
   subwf    REG1,W
   btfsc    STATUS,C
   goto    CHUCHO
   BSF    PORTC,0        ; PRENDE EL MOTOR
   GOTO   CHUCHO

                           
; Se separa el valor en unidades, decenas y centenas

UDC
      MOVWF    NUMERO      
      clrf    UNIDADES
      clrf    DECENAS
      clrf    CENTENAS
restaCentenas
      movlw    .100
      subwf    NUMERO, W
      btfss    STATUS, C
      goto    restaDecenas
      movwf    NUMERO
      incf    CENTENAS
      goto    restaCentenas
restaDecenas
      movlw    .10
      subwf    NUMERO, W
      btfss    STATUS, C
      goto    restaUnidades
      movwf    NUMERO
      incf    DECENAS   
      goto    restaDecenas
restaUnidades
      movf    NUMERO, W
      movwf    UNIDADES
      BSF      PORTB,7
      movf    DECENAS, W
      call    TABLA
      movwf    PORTB
      call    PDelay
      BCF    PORTB,7
      movf    UNIDADES, W
      call    TABLA
      movwf    PORTB
      call    PDelay

      RETURN
   
         END



Bueno, despúes de todo hasta aquí he podido llegar, pero no he podido correr el el circuito, las caracteristicas del proyecto son:

Mostrar en dos displays de anodo común la temperatura del LM35 y cuando llegue a cierta temperatura, que encienda un ventilador para bajar la temperatura. Eso es lo que se busca.

Espero me puedan ayudar a encontrar el problema.

Aprecio su ayuda.

Fello


 

anything