Autor Tema: control numero de coches y semaforo de ocupado  (Leído 2569 veces)

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

Desconectado george19

  • PIC10
  • *
  • Mensajes: 4
control numero de coches y semaforo de ocupado
« en: 01 de Marzo de 2004, 09:51:00 »
Tengo que hacer un programa para un proyecto, el cual controla el nº de coches que hay en el parking y un semáforo de ocupado cuando llega a 9.
Por RA0 entran los impulsos de contaje ascendente y por RA1 descendente. En el puerto B conectamos un display que cuenta de 0 a 9 y cuando llega a 9 en RB7 tenemos un impulso alto para activar el semaforo
Agradeceria que alguien me ayudara, a poder ser hoy porque mañana tengo que presentarlo.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: control numero de coches y semaforo de ocupado
« Respuesta #1 en: 01 de Marzo de 2004, 12:06:00 »
;*****************************************************************        
;contador de 8 vehiculos
;      NORBERTO PELLEGRINI 01/02/2004
; UN sensor INCREMENTA  
;OTRO SENSOR RESTA   - SI HAY 9 VEHICULOS, ENCIENDE LUZ ROJA
; PERO NENE, PARA LA PROXIMA, ESTUDIA... ESTO SE APRENDE CONSULTANDO
; NO EXISTE AUN UN MANUAL PARA ANDAR EN BICICLETA... TE DARAN CONSEJOS...
; PERO SOLO SE APRENDE A LOS GOLPES.....
; ESTO, REVISALO, PROBALO... MAMALO.. SINO EL PROFE, TE HACE PURE CON SOLO 2 PREGUNTAS!!!
; POR LO MENOS, ANALIZALO, ASI TENES IDEA DE COMO FUNCIONA... Y CUALES SERIAN LAS MEJORAS!!!
; GRABAR EN LA EEPROM ANTE CORTES DE LUZ... ETC...  E S T U D I AAAAA

;el cual controla el nº de coches que hay en el parking y un semáforo
 ;de ocupado cuando llega a 9.
;Por RA0 entran los impulsos de contaje ascendente
; y por RA1 descendente.
; En el puerto B conectamos un display que cuenta de 0 a 9 y
;  cuando llega a 9 en
;  RB7 tenemos un impulso alto para activar el semaforo
;Agradeceria que alguien me ayudara, a poder ser hoy porque mañana tengo que presentarlo.
;*****************************************************************
     LIST  P=16F84A
   #INCLUDE "p16f84A.inc"
   ERRORLEVEL      -302, -307    ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA)      
;**********************************************************************
   __CONFIG _CP_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC   ;CONFIGURO
;PARA LA GRABACION, CODE PROTECT OFF, RESET DE ENCENDIDO PERRO GUARDIAN=ON,ETC

reset   org   00h   ;el vector de reset es la dirección 00
   goto   INICIO   ;se salta al inicio del programa
   
   #DEFINE RELE  PORTB,7    ;RELE  SEMAFORO
   #DEFINE PULSUMA  PORTA,0 ;PULSUMA
   #DEFINE PULRESTA  PORTA,1 ;PULRESTA
   
   CBLOCK   H"0C"
DELAY   
MEMORIA
VEHICULO   
loops2
loops
   ENDC

;************* 7 SEGMENTOS DISPLAY + UNO  ****************************
;     SEGMENTOS   BAPCDGFE  
CERO    EQU     B"11011011"  ; LOS 7 BIT SON LOS
UNO     EQU     B"10010000"  ; SEGMENTOS
DOS     EQU     B"11001101"  ;
TRES    EQU     B"11011100"  ;
CUATRO  EQU     B"10010110"  ;
CINCO   EQU     B"01011110"  ;     ***A***
SEIS    EQU     B"01011111"  ;    *       *
SIETE   EQU     B"11010000"  ;    *F      *B
OCHO    EQU     B"11011111"  ;     ***G***  
NUEVE   EQU     B"11011110"  ;    *       *
DIEZ    EQU     B"00000000"  ;    *E      *C
ONCE    EQU     B"00000000"  ;     ***D***

;*****************************************************
;SUBRUTINA PARA CONVERTIR CADA CONTADOR A DIGITOS (18)
;*****************************************************
CONV_DIG        MOVF    VEHICULO,W
                CALL    NUMEROS
                MOVWF   PORTB   ;
      RETLW   0

;******************************************************
;             TABLA DE LOS NUMEROS + EL UNO
;******************************************************
NUMEROS         ADDWF   PCL,F     ;SUBRUTINA PARA MANDAR NUMERO AL DISPLAY
                RETLW   CERO
                RETLW   UNO
                RETLW   DOS
                RETLW   TRES
                RETLW   CUATRO
                RETLW   CINCO
                RETLW   SEIS
                RETLW   SIETE
                RETLW   OCHO
                RETLW   NUEVE
      MOVLW   .1   ;CON ESTO LIMITO EL MAXIMO
      MOVWF   VEHICULO   ;SI SE SUPERA DE 9, SE COLOCA EN UNO
      RETLW   UNO
;*************************************************************************************
;                                       RETARDO  ANTIRREBOTE
;*************************************************************************************
DEMORA       ; RETURN
               movlw   .80   ;RETARDO DE 80 MILISEGUNDOS PARA ANTIRREBOTE
               movwf   loops
top2           movlw  .110
               movwf   loops2
top            nop
               nop
               nop
               nop
               nop
               nop
               decfsz  loops2,1
               goto    top
               decfsz  loops,1
               goto    top2
               retlw   0   
;**************************************************************************
;             SUBRUTINA DE LECTURA DE ENTRADAS DE PULSADORES
;       PULSUMA , PULRESTA
LEER         
   
      BTFSS   PULSUMA      ;PULSADOR A MASA
      GOTO   PULSA1
      BTFSS   PULRESTA   ;PULSADOR A MASA
      GOTO   PULSA2
      RETLW   0      ;NO SE PULSO NINGUNO

PULSA1      CALL   DEMORA   
      BTFSC   PULSUMA   ;ESTA PULSADO?, SI ESTA PULSADO SALTA
      RETLW   0
      BTFSS   PULSUMA   ;ESPERAR A QUE SUELTE EL PULSADOR Y SALTA
      GOTO   $-1   ; NO SOLTO, SEGUIR ESPERANDO
   
      INCF   VEHICULO,F   ;SUMO
      call   CONV_DIG   ;MUESTRO CUAL ES EL VALOR CARGADO
      RETLW   0
      

PULSA2      CALL   DEMORA   
      BTFSC   PULRESTA   ;ESTA PULSADO?, SI ESTA PULSADO SALTA
      RETLW   0
      BTFSS   PULRESTA   ;ESPERAR A QUE SUELTE EL PULSADOR Y SALTA
      GOTO   $-1   ; NO SOLTO, SEGUIR ESPERANDO

      DECF   VEHICULO,F   ;RESTO
      call   CONV_DIG   ;MUESTRO CUAL ES EL VALOR CARGADO
      RETLW   0


VERIFICAR   BCF   RELE   ;SIEMPRE LO APAGO Y VERIFICO SI LLEGO AL MAXIMO
      MOVLW   .9
      XORWF   VEHICULO,W
      BTFSS   STATUS,Z
      GOTO   TIEMPO_FUNCION
      BSF   RELE   ;SE ACTIVA EL RELE DE SALIDA
      RETLW   0

;**********************************************************************
;          PROGRAMA PRINCIPAL
INICIO     CLRF   PORTA
      BSF   STATUS,RP0   ;BANCO 1
      MOVLW   B"11111011"   ;COLOCO COMO ENTRADAS Y UNA SALIDA RELE
      MOVWF   TRISA
      
      MOVLW   B"00000000"  ; TODAS SALIDAS AL DISPLAY Y  RELE
                MOVWF   TRISB
      BCF   STATUS,RP0   ;BANCO 0
;---------------------------------------------------------------   
      CLRF   VEHICULO
      call   CONV_DIG   ;MUESTRO CUAL ES EL VALOR CARGADO
      BCF   RELE
      
FUNCIONAMIENTO
      CALL   LEER
                                CALL VERIFICAR
      GOTO   $-2   ;QUEDA EN LOOP   

      END



Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado george19

  • PIC10
  • *
  • Mensajes: 4
RE: control numero de coches y semaforo de ocupado
« Respuesta #2 en: 01 de Marzo de 2004, 15:51:00 »
Gracias, tienes razón en lo que dices, si a mi me gustaría poderlo hacer pero peor profesor que este no hay en ningun lado. El control de la vallas lo logré hacer pero este no habia manera.
Intentaré entenderlo.
Un saludo

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: control numero de coches y semaforo de ocupado
« Respuesta #3 en: 01 de Marzo de 2004, 17:13:00 »
Hola, por algun otro lado, ta habia contestado... para eso necesitas 4 sensores, uno a cada lado de la barrera o valla, entonces, el sensor de entrada, enciende un bit del puerto que actua en el motor, se habre la barrera,pasa por el segundo sensor, que borra el bit, y se cierra la barrera.... aqui sigues con el programa del contador.....

para la salida seria igual, solo que resta...

Saludos al profesor


espero que lo entiendas....

suerte mañana!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Phako_mx

  • PIC10
  • *
  • Mensajes: 11
RE: control numero de coches y semaforo de ocupado
« Respuesta #4 en: 06 de Marzo de 2004, 22:57:00 »
Estoy aprendiendo todo eso de los pics, y me intereso el proyecto del estacionamiento asi q lo compile con MPlab, pero me sale un error en :

VERIFICAR BCF RELE ;SIEMPRE LO APAGO Y VERIFICO SI LLEGO AL MAXIMO
MOVLW .9
XORWF VEHICULO,W
BTFSS STATUS,Z
GOTO TIEMPO_FUNCION<<---ERROR,etiqueta no predeterminada
BSF RELE ;SE ACTIVA EL RELE DE SALIDA
RETLW 0

esa instruccion manda el programa a la etiqueta TIEMPO_FUNCION
PERO NO ESTA DEFINIDA EN EL PROGRAMA.
ES DE ALGUN TIEMPO O RETARDO?
O QUE SE SUPONE Q DEBE HACER?

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: control numero de coches y semaforo de ocupado
« Respuesta #5 en: 07 de Marzo de 2004, 11:00:00 »
Hola, creo que al copiar y pegra.... pero bueno, reemplaza el goto tiempo_funcion... simplemente por  RETLW 0  


Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Phako_mx

  • PIC10
  • *
  • Mensajes: 11
RE: control numero de coches y semaforo de ocupado
« Respuesta #6 en: 07 de Marzo de 2004, 18:32:00 »
, OK , ya se corrigio el error thanks, solo una  molestia mas, el display es catodo comun verdad?.pero en q patitas del pic lo conecto RBO a 1 del display,RB1  a 2 del display, RB2 a 3....
RB7 a led indicador del semaforo.

Si no es mucha molestia..

Desconectado Phako_mx

  • PIC10
  • *
  • Mensajes: 11
RE: control numero de coches y semaforo de ocupado
« Respuesta #7 en: 08 de Marzo de 2004, 11:53:00 »
, ya solucione el problema (los),RBO-"B",RB1-"A", RB2-"P",RB3"C",RB4-"D",RB5"G",RB6-"F",RB7-"E", BUENO ASI ESTABA ORIGINALMENTE PERO NO PRENDIA LA "E", POR Q POR AHI MISMO SALE LA SEÑAL PARA EL SEMAFORO , ASI Q LA CAMBIE ALA SALIDA DEL PUNTO DEL DISPLAY Y LE CAMBIE LOS BITS DE SALIDA AL DISPLAY Y YAS TA JALANDO. PERFECTAMENTE.

NO SE MUY BIEN COMO PERO FUNCIONA..


 

anything