Autor Tema: Control de tres entradas actuando sobre cinco salidas  (Leído 912 veces)

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

Desconectado Guille123

  • PIC10
  • *
  • Mensajes: 23
    • Laboratorio Electrónico
Control de tres entradas actuando sobre cinco salidas
« en: 16 de Septiembre de 2014, 11:37:51 »
¿Me podrían decir si está correcto el programa?




; El sistema controla tres entradas, para accionar sobre cinco salidas.

;
; ZONA DE DATOS **********************************************************************

   LIST      P=16F84A
   INCLUDE      <P16F84A.INC>
   INCLUDE      <RETARDOS.INC>
   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

   CBLOCK  0x0C            ; En esta posición empieza la RAM de usuario.
   ENDC

;         

; ZONA DE CÓDIGOS *******************************************************************

   ORG   0

;--- configuramos puertos

        bsf    h'03',5      ;Ponemos a 1 el bit 5 del registro status
   MOVLW   b'11111111'   ;cargamos en w '11111111'
   movwf   h'05'      ;Configuramos TRISA (05h) como entradas

   movlw   b'00000000'   ;Cargamos 0 en w
   movwf   h'06'      ;Configuramos TRISB (06H) como salidas
   bcf   h'03',5      ;Ponemos a 0 el bit 5 de STATUS y pasamos a bank0





;----- INICIO DE PROGRAMA PRINCIPAL --------

Inicio
   
   btfsc   porta,ra0   ;si A0 es cero salta la proxima línea
   goto   manual      ;pasa el sistema a manual, con la rutina manual, desactivando electromagnética por RB2 y alarma por RB1
   btfsc   porta,ra1   ;si A1 es cero salta la proxima línea
   goto   acceso      ;permiso concedido, activando RB1 para desarmar alarma y RB2 para desactivar la CEM.
   btfsc   porta,ra2   ;si A2 es cero salta la proxima línea
   goto   alarma      ;activa sistema de alarma, con la rutina alarma. activando buzzer por RB3 y alarma por RB1.
   movlw   b'00000000'   ;cargamos en w '00000000'
   movwf   trisb      ;sistema en reposo      
   goto   inicio      ;vuelve a testear entradas

manual

   movlw   b'01100000'   ;cargamos en w '01100000'
   movwf   trisb      ;activamos RB1 y RB2            
   goto   inicio      ;vuelve a testear entradas

acceso
   movlw   b'01101000'   ;cargamos en w '01101000'
   movwf   trisb      ;activamos RB1, RB2 y RB5(motorizada)
   call   Retardo_5s   ;retardo de 5 segundos   
   btfss   porta,ra1   ;si A1 es uno salta la proxima línea
   goto   inicio      ;inicio del programa
   goto   buzzer      ;Vamos a la subrutina buzzer
   goto   inicio      ;Vuelve a sensar las tres entradas


buzzer
   movlw   b'01110000'   ;cargamos en w '01110000'
   movwf   trisb      ;activamos RB1, RB2 y RB3 (desarme alarma, desactivacion CEM,activa BZ)
   call   Retardo_200ms   ;200ms BZ on
   call   Retardo_200ms   ;200ms BZ on
   movlw   b'01100000'   ;cargamos en w '01100000'
   movwf   trisb      ;activamos RB1 y RB2 apagamos BZ
   call   Retardo_200ms   ;200ms BZ off
   call   Retardo_100ms   ;100ms BZ off
   btfsc   porta,ra1   ;si A1 es cero salta la proxima línea
   goto   buzzer      ;continua subrutina de buzzer
   return
   

Alarma
   call   Retardo_100ms   ;100ms de demora
   btfss   porta,ra2   ;si A2 es uno salta la proxima línea   
   goto   inicio      ;vuelve a sensar entradas
   movlw   b'10010000'   ;cargamos en w '10010000'

   movwf   trisb      ;activamos RB0 (dispara alarma) y RB3 encendemos BZ
   goto   inicio



   END