Conversión analogica a digital

Whats the problem?

Se necesita programar un micro para que controle 2 valvulas, una de entrada (pump1) y una de salida (pump2), ademas de un motor (mezclador). El sensor sera un medidor de nivel, rango de medición 0-5v (0- 100% respectivamente). Se necesita que al arranque la valvula 1(pump1) este encendida y lo demas apagado, al pasar del 40% de la capacidad del tanque encende el motor, luego si pasa el 80% de la capacidad se apaga la valvula 1 (pump 1). Al cabo de un segundo apagar el motor y encender la valvula 2 (pump 2). Por ultimo si baja a 0% de la capacidad se apaga la valvula 2 (pump 2).


Programa en assembler para MPLAB

  1. LIST P=16F877A
  2. INCLUDE < P16F877A.INC >
  3. ORG 0000H
  4. BSF STATUS,RP0
  5. CLRF TRISB
  6. BCF STATUS,RP0
  7. MOVLW B'10011001'
  8. MOVWF ADCON0
  9. MOVLW B'00000001'
  10. MOVWF PORTB
  11. INICIO
  12. MEDIR1
  13. CALL ANALOG
  14. MOVLW .102
  15. SUBWF ADRESH,W
  16. BTFSS STATUS,C
  17. GOTO MEDIR1
  18. BSF PORTB,3
  19. MEDIR2
  20. CALL ANALOG
  21. MOVLW .204
  22. SUBWF ADRESH,W
  23. BTFSS STATUS,C
  24. GOTO MEDIR2
  25. BCF PORTB,0
  26. RETARDOS
  27. MOVLW .250
  28. MOVWF 20h
  29. L1
  30. MOVLW .250
  31. MOVWF 21H
  32. L2
  33. MOVLW .20
  34. MOVWF 22H
  35. L3
  36. NOP
  37. DECFSZ 22H
  38. GOTO L3
  39. DECFSZ 21H
  40. GOTO L2
  41. DECFSZ 20H
  42. GOTO L1
  43. BCF PORTB,3
  44. BSF PORTB,1
  45. MEDIR3
  46. CALL ANALOG
  47. MOVLW .0
  48. SUBWF ADRESH,W
  49. BTFSS STATUS,Z
  50. GOTO MEDIR3
  51. BCF PORTB,1
  52. GOTO INICIO
  53. RET_20
  54. MOVLW .33
  55. MOVWF 23H
  56. DECFSZ 23H
  57. GOTO $-1
  58. RETURN
  59. ANALOG
  60. CALL RET_20
  61. BSF ADCON0,GO
  62. BTFSC ADCON0,GO
  63. GOTO $-1
  64. RETURN
  65. END

Simulación en proteus para probar el codigo .HEX generado por la compilación del programa en MPLAB.


Linksappsclose