PIC16F877A tiene problemas en el puerto B "no responde"

Buenas estoy haciendo un tablero digital para futbol con el pic16f877a
La idea es mostrar los datos de tiempo del partido como periodo y marcadores de los equipos con 10 displays de cátodo común, ya tengo el código en asm y también tengo un .inc.
Este código me funciona bien en Isis, aclaro que utilizo el puerto b para prender los display,
además de otros pulsadores que van al puerto RA que me activan el tablero con un cero.
El problema radica en que el pic no responde en el puerto Rb, no da señas de nada.

Para más facilidad en mi pagina web están las fotos de la simulación y el tablero con el montaje.

Aquí la dejo http://www.movilgame.comocreartuweb.es/index.html
Agradezco su ayuda ya que tengo que presentar este proyecto urgente.

Aquí les dejo el código assembler de mi proyecto código partido.asm y el .inc estan en pdf
 

Adjuntos

  • codigo partido.pdf
    109.9 KB · Visitas: 16
  • inc.pdf
    169.1 KB · Visitas: 14
Última edición:
Buenas por favor pido ayuda estoy haciendo un tablero digital para futbol que básicamente lo que hace es llevar el tiempo del partido en 5 displays de cátodo común uno para horas dos para minutos y otros dos para segundos además de otros 5 displays dos para el marcador del primer equipo o tris dos para el marcador del otro equipo y un ultimo para el pedido 1, 2, y d= descanso. Tengo el código en asm y funciona bien en Isis pero al quemar el pic el puerto b no responde

Para más facilidad en mi pagina web están las fotos de la simulación y el tablero con el montaje.

http://www.movilgame.comocreartuweb.es


Código:
    list p=16F877A

    #include p16F877A.inc

;Entradas en el PORTA

ST equ 0x00 ;Pulsador START

P1T equ 0x01 ;Pulsador de movimiento de Izquierda

P2T equ 0x02 ;Pulsador de Movimiento Derecha

P3T equ 0x03 ;Pulsador de Incremento de Valor

P4T equ 0x04 ;Pulsador de Decremento de Valor

;PORTC: S1 S0 EQ11 EQ10 X X X X

;Entradas en el PORTC

EQ10 equ 0x04 ;Pin ACTIVAR DIGITO UNIDAD EQ1

EQ11 equ 0x05 ;Pin ACTIVAR DIGITO DECENA EQ1

S_0 equ 0x06 ;Pin ACTIVAR DIGITO UNIDAD SEGUNDO

S_1 equ 0x07 ;Pin ACTIVAR DIGITO DECENA SEGUNDO

;PORTD: X EQ2 EQ1

;Entradas en el PORTD

EQ1 equ 0x00 ;Pin de ENTRADA de GOLES EQ1

EQ2 equ 0x01 ;Pin de ENTRADA de GOLES EQ2

;PORTE: T H0 M1 M0 EQ21 EQ20 X X

;Salidas en el PORTD

EQ20 equ 0x02 ;Pin ACTIVAR DIGITO UNIDAD EQ2

EQ21 equ 0x03 ;Pin ACTIVAR DIGITO DECENA EQ2

M_0 equ 0x04 ;Pin ACTIVAR DIGITO UNIDAD MINUTO

M_1 equ 0x05 ;Pin ACTIVAR DIGITO DECENA MINUTO

H_0 equ 0x06 ;Pin ACTIVAR DIGITO HORA

TT equ 0x07 ;Pin ACTIVAR TIEMPO DE JUEGO

;BITS de TIN Registro para el Control de Flancos cuando se esta jugando

EQ1T equ 0x00 ;Bit de Entrada de EQ1

EQ2T equ 0x01 ;Bit de Entrada de EQ2

STT equ 0x02 ;Bit de Entrada del PULSADOR START

EST equ 0x20 ;Registro que Indica que Rutina debe ser LLAMADA

SEL equ 0x21 ;Registro de Seleccion de Digito de Display a modificar

SED equ 0x22 ;Registro de Seleccion de Display a encender

HT0 equ 0x2A ;GUARDA la HORA INGRESADA

MT1 equ 0x2B ;GUARDA la DECENA MINUTO INGRESADO

MT0 equ 0x2C ;GUARDA la UNIDAD MINUTO INGRESADO

T equ 0x30 ;Registro del Tiempo de Juego

H0 equ 0x31 ;Hora en el DISPLAY

M1 equ 0x32 ;Decena Minuto en el DISPLAY

M0 equ 0x33 ;Unidad Minuto en el DISPLAY

S1 equ 0x34 ;Decena Segundo en el DISPLAY

S0 equ 0x35 ;Unidad Segundo en el DISPLAY

CEQ11 equ 0x36 ;Decena de Contador de GOLES de EQ1 en el DISPLAY CEQ10 equ 0x37 ;Unidad de Contador de GOLES de EQ1 en el DISPLAY

CEQ21 equ 0x38 ;Decena de Contador de GOLES de EQ2 en el DISPLAY

CEQ20 equ 0x39 ;Unidad de Contador de GOLES de EQ2 en el DISPLAY

TEMP equ 0x40

TIN equ 0x41 ;Registro de Control de Flanco de Señales de Entrada cont equ 0x44 ;Contador de NUMERO de VECES de DESBORDE del TIMER1

    org 0x00
    goto inicio

    org 0x05
tabla
;_ABCDEFG
    addwf PCL,f
    retlw b'01111110' ;0
    retlw b'00110000' ;1
    retlw b'01101101' ;2
    retlw b'01111001' ;3
    retlw b'00110011' ;4
    retlw b'01011011' ;5
    retlw b'01011111' ;6
    retlw b'01110000' ;7
    retlw b'01111111' ;8
    retlw b'01111011' ;9
    retlw b'01101111' ;A
    retlw b'00011111' ;B
    retlw b'01001110' ;C
    retlw b'00111101' ;D
    retlw b'01001111' ;E
    retlw b'01000111' ;F

inicio

    bcf STATUS,RP1
    bsf STATUS,RP0 ;Banco 1
    movlw b'00000110'
    movwf ADCON1
    movlw b'11111111'
    movwf TRISA

    clrf TRISB ;Configuro el PORTB como salida para los displays 7 segmentos

;PORTC: S1 S0 EQ11 EQ10 P4 P3 P2 P1

    movlw b'00001111'

    movwf TRISC

;PORTD: T H0 M1 M0 EQ21 EQ20 EQ2 EQ1

    movlw b'00000011'
    movlw b'00000000'
    movwf TRISD
    movlw b'00000111'
    movwf TRISE

;Retardo = 4*Tosc*Preescaler*256

    movlw b'00000101' ;Configuro el OPTION_REG para utilizar el TIMER0
    movlw b'00000000' ;Configuro el OPTION_REG para utilizar el TIMER0
    movwf OPTION_REG ;x, x, Reloj Interno, x, Prescaler para TMR0, Preescaler - 64

;Se tiene un desborde cada 16.384ms bcf STATUS,RP0 ;Banco 0

;Retardo = 4*Tosc*Preescaler*(655536-TMR1)

    movlw b'00001000'
    movwf T1CON

;Retardo 65.536ms
    clrf PORTB
    movlw b'11110000'
    movlw b'00000000'
    movwf PORTC
    movlw b'11111111'
    movlw b'00000000'
    movwf PORTD
    clrf EST
    clrf TMR0
    clrf TMR1H
    clrf TMR1L
    bsf T1CON, TMR1ON
    movlw b'11111111'
    movwf PORTE
    movwf PORTA

    goto bucle

bucle

    movf EST, w ;Reviso si EST = 0 --> Se debe realizar la entrada del tiempo de JUEGO
    btfsc STATUS, Z

    call ingresotiempo ;Rutina pediente de la modificacion de los valores de los digitos del tiempo

    movlw 0x01

    xorwf EST,w ;Reviso si EST = 1 --> Se debe temporizar el PRIMER TIEMPO
    btfsc STATUS, Z

    call tempo1p ;Rutina para realizar la temporizacion de primer tiempo y el ingreso de goles

    movlw 0x02

    xorwf EST,w ;Reviso si EST = 2 --> Se debe temporizar el DESCANSO
    btfsc STATUS, Z

    call tempod ;Rutina para realizar la temporizacion del descanso y de la anulacion del mismo

    movlw 0x03

    xorwf EST,w ;Reviso si EST = 3 --> Se debe temporizar el SEGUNDO TIEMPO
    btfsc STATUS, Z

    call tempo2p ;Rutina para temporizar el segundo tiempo y el ingreso de goles de los equipos

    movlw 0x04

    xorwf EST,w ;Reviso si EST = 4 --> Se espera que se oprime el boton de ST para iniciar denuevo la secuencia

    btfsc STATUS, Z
    call detener call displays
    goto bucle

    #include ingreso.inc

    end
 
Última edición por un moderador:
Atrás
Arriba