TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: FerchoDex en 04 de Junio de 2020, 23:43:39

Título: Apoyo
Publicado por: FerchoDex en 04 de Junio de 2020, 23:43:39
Que tal espero se encuentren bien , yo soy alguien nuevo que empieza en esto de la programacion de pics, tengo muy poca experiencia pero he logrado aprender lo básico y bueno el punto es que me encuentro haciendo un programa en ensamblador el cual mide la temperatura con un LM35 y pues ya mide la temperatura y todo sin en cambio me gustaría implementar que cuando está alcance los 30° se encienda un motor. Me recomendaron utilizar BTFSC  ,pero aún nose como comenzar o que hacer para implementar una especie de IF.

Espero contar con su apoyo.
Título: Re:Apoyo
Publicado por: KILLERJC en 05 de Junio de 2020, 08:37:32
Si ya lograste hacer funcionar el LM35 (leerlo y mostrarlo), me parece muy raro que no sepas usar el BTFSC/BTFSS pero en fin.

LO que buscas es comparar. Y necesitas comparar de igual a mas grande, Y que mejor forma de comparar que restando!
Lo que vamos a hacer es utilizar SUBLW (afecta las badneras Z,C y DC), el cual es:

SUBLW = Literal - Registro
Es decir podemos hacer:   30 - TemperturaMedida

Si TemperaturaMedida < 30 entonces las banderas quedan Z= 0, C=1 (Resultado positivo de la resta)
Si TemperaturaMedida = 30 entonces las banderas quedan Z= 1, C=1
Si TemperaturaMedida > 30 entonces las banderas quedan Z= 0, C=0 (Resultado negativo - se produce un underflow)

Entonces podes ver que el carry te indica cuando es mayor a 30 si hacemos esto, por lo que si quisiera hacerlo cuando es IGUAL o MAYOR A 30, entonces deberia usar el valor 29 para no estar preguntando también por la bandera Z.


En Fin... Supongamos que nuestra temperatura esta en el registro TEMP

Código: ASM
  1. MOVF    TEMP, W
  2. SUBLW  .29
  3. BTFSC   STATUS, C
  4. GOTO    NO_LO_SUPERO
  5. GOTO    SI_LO_SUPERO  // O usar el codigo aca

Título: Re:Apoyo
Publicado por: FerchoDex en 06 de Junio de 2020, 01:05:48
Lo siento por mi falta de conocimiento, pero como comente tengo muy poca experiencia en esto. Pero bueno me quedo claro que es una mejor idea implementar la resta, lo que no logro entender es en que parte la puedo implementar.

Adjunto el código que tengo hasta el momento. Cabe aclarar que una parte la tome de un trabajo ajeno el LCD fue cosa mía.
Título: Re:Apoyo
Publicado por: FerchoDex en 06 de Junio de 2020, 01:08:33
Enserio gracias nuevamente.
Título: Re:Apoyo
Publicado por: KILLERJC en 06 de Junio de 2020, 07:08:29
Debido a que el codigo es un poco largo, vos sos el que conoces el codigo y sabes cuales son los registros a usar. Entonces vos debrias colocar el codigo donde desees, ademas cambiarle los nombre de los registros que yo llame (TEMP) al que vos usas

Lo implementas en este lugar:

Lectura del LM35
Acá pregunto si supero los 30 y hago lo que deseo
Muestro