Autor Tema: Codigo fuente para punta logica problemas !!!  (Leído 3680 veces)

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

Desconectado xdemonsx

  • PIC10
  • *
  • Mensajes: 1
Codigo fuente para punta logica problemas !!!
« en: 25 de Diciembre de 2012, 20:49:48 »
hola amigo del foro mis respetos y admiracion para todos ustedes espero me puedan ayudar mi duda es la siguiente: Hace dias compre una sonda logica de display de 7 segmetos  que utiliza el pic 16f84a, por error de medicion (sobrevoltaje) queme la punta y por consiguiente el pic 16f84a el cual remplace con otro igual. El kit de punta logica trajo un cd con material de programacion y varios codigos fuente entre esos el de la punta logica (archivo asm) el cual monte en el mplab y saque el archivo .hex correspondiente y cargue al nuevo pic 16f84a con la tarjeta  pickit. Se lo monto a la sonda logica el cual no funciona absolutamente nada, ya probe el display y se que esta bueno y demas componentes le he cargado otros archivox hex al pic y funciona correctamente. Mi pregunta sera q el codigo fuente tiene un problema o alguna configuracion que hay que cambiar? para que funcione, le pido ayuda al que me vendio la punta y no quiere recibir mi llamada solo me dice q ese es el codigo que no lo moleste mas. Les agradezco su ayuda el codigo es el siguiente:


   list p=16f84;, s=off


ESTADO   EQU   03H
OPCION   EQU   81H
TRISA   EQU   85H
TRISB   EQU   86H
PORTA   EQU   05H
PORTB   EQU   06H
INTCON   EQU   0BH
TMR0   EQU   01H
PC   EQU   02H
PHZ   equ   7; RB7
PPRUEB   equ   6; RB6
PLED   equ   5 ; RB5
BUZZ   equ   4 ; RB4
loops   equ     0dh       ;utilizado en retardos (milisegundos)
loops2  equ     0eh       ;utilizado en retardos
BANDERA   EQU   0CH
TEM   EQU   0FH
   ORG 0x000      ;vector de reset
   GOTO   MAIN
   ORG 0x004      ; vector de interrupcion
   BTFSS   BANDERA,1 ;CHEQUEO BANDERA DE QUE SE HA
   GOTO   UNOCERO     ; PRESENTADO UN ESTADO DE ALTA
           ; IMPEDANCIA.
   BTFSS   PORTB, 5  ; SI ESE ES EL CASO, CADA QUE
   BSF   PORTB, 5  ; OCURRA UNA INTERRUPCION, SE ORIGINA
   ;BTFSS   PORTB, 4  ; POR LOS PINES 4 Y 5 DEL PUERTO B,
   ;BSF   PORTB, 4  ; UNA SEÑAL DE PWM, GENERADA CAMBIANDO
   BTFSC   PORTB, 5  ; ALTERNADAMENTE EL ESTADO DE ESTAS
   BCF   PORTB, 5  ; DOS LINEAS, LAS CUALES CORRESPONDEN
   ;BTFSC   PORTB, 4  ; AL DIODO LED INDICADOR Y AL ZUMBADOR.
   ;BCF   PORTB, 4  ;
;   BTFSC   BANDERA,7
;   GOTO   INO
;INI   MOVLW   0X04
;   CLRF   TEM
;INO   INCF   TEM,1
;   SUBWF   TEM,1
;   BTFSS   ESTADO,2
;   GOTO   NO
;:SI   CLRF   TEM
;   BTFSS   PORTB,4
;   BSF   PORTB,4
;   BTFSC   PORTB,4
;   BCF   PORTB,4
;   BCF   BANDERA,7
;   GOTO   SS
;NO   BSF   BANDERA,7
;   CALL   RETARDO
SS   BSF   ESTADO, 5 ; VOY A LA PAGINA 1
   BCF   INTCON, 2 ; B0RRO LA BANDERA DE INTER. DEL TMR0
   BCF   ESTADO, 5 ; VUELVO A LA PAGINA 0
   MOVLW   0xAA  ; CONFIGURO EL PORCENTAJE DE CICLO UTIL
   MOVWF   TMR0     ; EN EL TEMPORIZADOR TMR0.
   RETFIE

UNOCERO   BTFSC   BANDERA,0 ; SI NO HAY ESTADO DE ALTA IMPEDANCIA,
   GOTO    UNO     ; SE VERIFICA EL BIT 0 DEL REGISTRO BANDERA
   BTFSS   PORTB, 4  ; PARA DETERMINAR SI SE HA LEIDO UN CERO
   BSF   PORTB, 4  ; O UN UNO. SI SE HA LEIDO UN CERO (BIT   
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP

   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP


   BTFSC   PORTB, 4  ; CERO --> 0), SE MANDA UNA SEÑAL DE PWM HACIA
   BCF   PORTB, 4  ; EL ZUMBADOR A UNA FRECUENCIA MENOR QUE LA DE HZ.
   NOP
   NOP   
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP

   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP

   NOP
   NOP
   NOP
   NOP
   NOP

   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP

   BSF   ESTADO, 5 ; VOY A LA PAGINA 1
   BCF   INTCON, 2 ; B0RRO LA BANDERA DE INTER. DEL TMR0
   BCF   ESTADO, 5 ; VUELVO A LA PAGINA 0
;   CALL   RETARDO
   MOVLW   0x06     ; CONFIGURO UN PORCENTAJE DE CICLO UTIL
   MOVWF   TMR0      ; EN EL TEMPORIZADOR TMR0
   RETFIE
UNO   BSF   PORTB, PLED;
;   BTFSS   PORTB, 5  ; SI SE HA DETERMINADO UN ESTADO LOGICO ALTO,
;   BSF   PORTB, 5  ; SE MANDA UNA NUEVA SEÑAL DE PWM HACIA EL
   BTFSS   PORTB, 4  ; ZUMBADOR, A UNA NUEVA FRECUENCIA MAYOR A
   BSF   PORTB, 4  ; LA ENVIADA PARA EL ESTADO DE ALTA IMPEDANCIA.
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP


;   BTFSC   PORTB, 5  ; NOTE QUE ESTA RUTINA DE INTERRUPCION SE
;   BCF   PORTB, 5  ; HA DIVIDIDO EN TRES SUBRUTINAS, CADA UNA DE LAS
   BTFSC   PORTB, 4  ; CUALES SE ENCARGA DE ENVIAR UNA FRECUENCIA DISTINTA
   BCF   PORTB, 4  ; PARTIENDO DE UN SOLO TEMPORIZADOR.
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP

   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   NOP
   BSF   ESTADO, 5 ; VOY A LA PAGINA 1
   BCF   INTCON, 2 ; B0RRO LA BANDERA DE INTER. DEL TMR0
   BCF   ESTADO, 5 ; VUELVO A LA PAGINA 0
   MOVLW   0x02     ; CONFIGURO EL PORCENTAJE DE CICLO UTIL
   MOVWF   TMR0      ; EN EL TEMPORIZADOR TMR0
;   CLRF   TMR0
   RETFIE

;A
MAIN:
   BSF   ESTADO, 5   ; CONMUTA A LA PAGINA 1
   MOVLW   B'01000000' ; SE CONFUGRA EL FUNCIONAMIENTO DE LOS PINES
   MOVWF   TRISB       ; DE ACUERDO A LO DISPUESTO EN EL DIAGRAMA
   MOVLW   B'00000000' ; ESQUEMATICO. SOLO HAY UNA ENTRADA, EL
   MOVWF   TRISA       ; PIN NUMERO SEIS DEL PUERTO B.
   BCF   OPCION, 5   ; CONFIGURO EL TIMER COMO TEMPORIZADOR
   BCF   INTCON, 2   ; BORRO BANDERA DE INT. DEL TMR0
   BSF   INTCON, 7   ; HABILITADOR GLOBAL DE INT.
   BCF   ESTADO, 5   ; VUELVO A LA PAGINA 0
   CLRF   BANDERA
;------------ B --------------
loop   NOP          ; EL PRIMER PASO ES DETERMINAR SI EXISTE
PULSO   BTFSS   PORTB,6       ; EN LA ENTRADA UNA FRECUENCIA DE PULSOS
   GOTO   PULSO_BAJO  ; EL METODO ES MUY SENCILLO, SOLO SE LEE
PULSO_ALTO          ; LA ENTRADA RB6, Y SE VERIFICA QUE ESE
   CALL   RETARDO       ; NIVEL PERMANEZCA DURANTE CIERTO PERIODO
   BTFSC   PORTB,6       ; DE TIEMPO, EL CUAL ES DETERMINADO POR
   GOTO   loop1       ; LA RUTINA RETARDO. CAMBIANDO EL VALOR DE
   GOTO   EST_PULSO   ; ESA RUTINA, CAMBIAMOS LA FRECUENCIA DE DETECCION.
PULSO_BAJO          ; EN ESTA LINEA ESTAMOS LEYENDO DE NUEVO RB6
   CALL   RETARDO       ; DESPUES DE UN RETARDO PARA CONSTATAR QUE SIGUE
   BTFSS   PORTB,6       ; EXISTIENDO UN NIVEL LÓGICO BAJO.
   GOTO   loop1       ; SI AUN EXISTE SIGNIFICA QUE NO HAY ENTRADA DE PULSOS
EST_PULSO          ; Y PODEMOS CONTINUAR EL PROGRAMA.   
   BSF   PORTB,1       ; SI SE HA DETECTADO UNA ENTRADA DE PULSOS,
   BSF   PORTA,1       ; ACTIVAMOS LOS PINES DE LOS PUERTOS
   BSF   PORTA,2       ; CORRESPONDIENTES PARA QUE SE VISUALICE LA LETRE P
   BSF   PORTB,0       ; PARA INDICAR QUE ESTA ENTRANDO A LA PUNTA LOGICA
   BSF   PORTB,2     ; UNA SERIE DE PULSOS A UNA FRECUENCIA DETERMINADA.
   BCF   PORTB,3
   BCF   PORTA,3       ; CUANDO SE VISUALIZA LA P, REGRESAMOS A LA ETIQUETA
   BCF   PORTB,5       ; loop PARA OBSERVAR EN QUE MOMENTO NOS SALIMOS DE
   BCF   PORTB,4       ; ESTE ESTADO.
   GOTO   loop    
      
;-------C ----------
loop1   BCF   PORTB, PHZ   ; RB7 AHORA ESTA EN BAJO...
   BTFSC   PORTB, PPRUEB   ; PRUEBO SI RB6 ES IGUAL A RB7
   GOTO   nohz      
   BSF   PORTB, PHZ    ; .. Y LUEGO PONGO EN ALTO
   BTFSS   PORTB, PPRUEB   ; PRUEBO SI RB6 ES IGUAL A RB7
   GOTO   nohz      
hz   BSF   BANDERA,1   ; SI LA ENTRADA ES HI Z
   BSF   PORTB,0      ; SE ACTIVA EL BIT 1 DEL REGISTRO
   BCF   PORTB,1    ; BANDERA PARA PODER RECONOCER
   BSF   PORTB,2      ; ESTE ESTADO DENTRO DE LA INTERRUPCION
   BSF   PORTB,3      ; Y MANDAR LA FRECUENCIA ADECUADA.
   BSF   PORTA,1      ; AL MISMO TIEMPO SE ACTIVA LA LETRA H
   BSF   PORTA,2      ; EN EL DISPLAY DE SIETE SEGMENTOS.
   BCF   PORTA,3      ; FINALMENTE ACTIVO LA INTERRUPCION:
;   BSF   OPCION,0
;   BSF   OPCION,1
;   BSF   OPCION,2
;   BSF   OPCION,5
;   CLRF   TMR0
   MOVLW   0X04
   MOVWF   TEM
AGAIN   CALL   RETARDO
   BTFSS   PORTB,4
   BSF   PORTB,4
   BTFSC   PORTB,4  ; AL DIODO LED INDICADOR Y AL ZUMBADOR.
   BCF   PORTB,4  ;
   DECFSZ   TEM,1
   GOTO   AGAIN
   BCF   ESTADO, 5   ; VOY A LA PAGINA 1
   BSF   INTCON, 5   ; HABILITO INT. POR TMR0
   BCF   ESTADO, 5   ; VUELVO A LA PAGINA 0
   GOTO   loop
;--------------D --------
nohz   BCF   BANDERA,1   ; SI LA ENTRADA NO ESTA EN ESTADO DE ALTA Z
   BCF   PORTB, PHZ   ; PONGO EL PIN RB7 EN BAJO, PARA PRUEBAS POSTERIORES
   BTFSS   PORTB, 6   ; Y LEO FINALMENTE EL PIN 6 DEL PUERTO B
   GOTO   BAJO      ; Y VOY A LA RUTINA CORRESPONDIENTE (ALTO O BAJO)
;------------ E ------------
ALTO   BSF   PORTB, PLED   ; SI LA ENTRADA ESTA EN ALTO, LED ENCENDIDO FULL
   BSF   BANDERA,0   ; ACTIVO EL BIT 0 DEL REGISTRO BANDERA
   BSF   PORTB,2      ; PARA RECONOCER ESTE ESTADO DENTRO DE LA
   BSF   PORTB,3      ; INTERRUPCION.   
   BCF   PORTB,1      ; LUEGO HABILITO LOS PINES ADECUADOS QUE PERMITIRAN
   BCF   PORTB,0      ; VISUALIZAR EL NUMERO 1 EN EL DISPLAY
   BCF   PORTA,1      ; DE SIETE SEGMENTOS.
   BCF   PORTA,2      ; FINALMENTE HABILITO EL FUNCIONAMIENTO
   BCF   PORTA,3      ; DE LA INTERRUPCION POR EL TMR0
   BCF   ESTADO, 5   ; VOY A LA PAGINA 1
   BSF   INTCON, 5   ; HABILITO INT. POR TMR0
   BCF   ESTADO, 5   ; VUELVO A LA PAGINA 0
   GOTO   loop
; -----------  F ---------
BAJO   BCF   PORTB, PLED   ; SI LA ENTRADA ESTA EN BAJO, SE DEBE APAGAR
   BCF   BANDERA,0   ; EL LED DE SALIDA, PONER EN CERO EL BIT 0
   BSF   PORTB,1      ; DEL REGISTRO BANDERA PARA SER DETECTADO
   BSF   PORTB,2      ; ESTE ESTADO DENTRO DE LA INTERRUPCION,
   BSF   PORTB,3      ; Y ACTIVAR LOS PINES CORRESPONDIENTES DE
   BSF   PORTA,1      ; LOS PUERTOS PARA VISUALIZAR EL NUEMRO
   BSF   PORTA,2      ; O EN EL DISPLAY DE SIETE SEGMENTOS.
   BSF   PORTA,3      ; FINALMENTE SE ACTIVA LA INTERRUPCION
   BCF   PORTB,0      ; POR TIMER0.
   CALL   RETARDO
   BCF   ESTADO, 5   ; VOY A LA PAGINA 1
   BSF   INTCON, 5   ; HABILITO INT. POR TMR0
   BCF   ESTADO, 5   ; VUELVO A LA PAGINA 0
   GOTO   loop

RETARDO  ;subrutina de retardo de 100 milisegundos
          movlw     D'20'    ;el registro loops contiene el n£mero
          movwf     loops     ;de milisegundos del retardo
top2      movlw     D'30'    ;
          movwf     loops2   
top;          CLRF   TMR0;
     nop
          nop
          nop
          nop
          nop
          nop
          decfsz    loops2    ;pregunta si termino 1 ms
          goto      top

          decfsz    loops     ;pregunta si termina el retardo
          goto      top2
          retlw     0

 
   end


Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re: Codigo fuente para punta logica problemas !!!
« Respuesta #1 en: 26 de Diciembre de 2012, 15:31:49 »
Deberias subir el esquematico para poder ayudarte  :)
quiero construir un "Condensador de flujos"