Autor Tema: Apoyo  (Leído 1382 veces)

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

Desconectado FerchoDex

  • PIC10
  • *
  • Mensajes: 3
Apoyo
« 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Apoyo
« Respuesta #1 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


Desconectado FerchoDex

  • PIC10
  • *
  • Mensajes: 3
Re:Apoyo
« Respuesta #2 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.

Desconectado FerchoDex

  • PIC10
  • *
  • Mensajes: 3
Re:Apoyo
« Respuesta #3 en: 06 de Junio de 2020, 01:08:33 »
Enserio gracias nuevamente.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Apoyo
« Respuesta #4 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