Hola que tal ya tengo un poco de tiempo en el foro pero por lo regular no pregunto ya que en otras preguntas resuelven mi duda pero en esta ocacion no he encontrado como resolver mi problema, ahora al punto, es algo muy sencillo solo es prender y apagar led con los puertos son 24 leds usando los tres puertos del pic con oscilador interno y el MCLR es pin de entrada con un boton para seleccionar la secuencia de los led, el problema es es el siguiente en la secuencia de prender los leds uno por uno aste que 8 esten prendidos prendo el r1 luego el r2 y asi asta el r8 pero cuando mando a prender el r2 se apaga el r1 y cuando prendo el r3 se apaga el r2 y cuando prendo el r4 se queda prendido el r3 eso es como debe ser y asi se prenden son problemas pero el r1 y r2 dan problema y asi es algo parecido con los g1-g8 y con los b1-b8 , solo por aclarar esta programado en asm pongo parte del codigo para ver si ahi pueda ser el problema les agradeceria que me ayudaran PD cuando hago simulacion en la computadora hace lo mismo
y me es muy raro que tambien lo haga en simulacion el problema podria estar en la linea _config???
Código:
list P=16F886 ; indicamos el modelo de PIC que tenemos
#include "P16F886.inc"
__CONFIG _CONFIG1, _MCLRE_OFF & _PWRTE_OFF & _LVP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _FCMEN_OFF & _IESO_OFF & _BOR_OFF
org 0x0000
; registros
;bcf STATUS,IRP
;bsf STATUS,RP0
;bcf STATUS,RP1
banksel ADCON0
BCF ADCON0,ADON
Banksel TRISA
MOVLW B'00000000'
movwf TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'11111111'
MOVWF TRISE
banksel PORTA
#DEFINE R1 PORTA,0
#DEFINE G1 PORTA,1
#DEFINE B1 PORTA,2
#DEFINE R2 PORTA,3
#DEFINE G2 PORTA,4
#DEFINE B2 PORTA,5
#DEFINE R3 PORTA,7
#DEFINE G3 PORTA,6
#DEFINE B3 PORTC,0
#DEFINE R4 PORTC,1
#DEFINE G4 PORTC,2
#DEFINE B4 PORTC,3
#DEFINE R5 PORTC,4
#DEFINE G5 PORTC,5
#DEFINE B5 PORTC,6
#DEFINE R6 PORTC,7
#DEFINE G6 PORTB,0
#DEFINE B6 PORTB,1
#DEFINE R7 PORTB,2
#DEFINE G7 PORTB,3
#DEFINE B7 PORTB,4
#DEFINE R8 PORTB,5
#DEFINE G8 PORTB,6
#DEFINE B8 PORTB,7
#DEFINE BOT PORTE,3
PDel0 equ 0x20 ;Usado en la rutina Delay
PDel1 equ 0x21 ;idem
PDel2 equ 0x22 ;idem
VAR EQU 0X23
movlw b'00000000'
movwf PORTA
movlw b'00000000'
movwf PORTB
movlw b'00000000'
movwf PORTC
movlw 3
movwf VAR
INICIO
movlw 4; NUMERO MAXIMO DE CICLOS EN EL PROGRAMA
SUBWF VAR,W ;resta el valor W del valor DE VAR
BTFSS STATUS,Z; si es cero la resta el bit Z se pone en uno y se revisa
GOTO UNO
MOVLW 1
MOVWF VAR
UNO movlw 1; NUMERO QUE INDICA CUAL ES LA RUTINA PARA SELECCIONAR
SUBWF VAR,W ;resta el valor W del valor DE VAR
BTFSS STATUS,Z; si es cero la resta el bit Z se pone en uno y se revisa
GOTO DOS
GOTO RUTINA1
DOS movlw 2; NUMERO QUE INDICA CUAL ES LA RUTINA PARA SELECCIONAR
SUBWF VAR,W ;resta el valor 0x23 del valor de la letra ulsada
BTFSS STATUS,Z; si es cero la resta el bit Z se pone en uno y se revisa
GOTO TRES
GOTO RUTINA2
TRES movlw 3; NUMERO QUE INDICA CUAL ES LA RUTINA PARA SELECCIONAR
SUBWF VAR,W ;resta el valor 0x23 del valor de la letra ulsada
BTFSS STATUS,Z; si es cero la resta el bit Z se pone en uno y se revisa
GOTO INICIO
GOTO RUTINA3
RUTINA3
BSF R1
;CALL DE500MS
MOVLW 0XFF
MOVLW 0
CALL CAMBIO
BSF R2
;CALL DE500MS
;CALL CAMBIO
BSF R3
BSF R2
BSF R1
;CALL DE500MS
;CALL CAMBIO
BSF R4
;CALL DE500MS
;CALL CAMBIO
BSF R5
;CALL DE500MS
;CALL CAMBIO
BSF R6
;CALL DE500MS
;CALL CAMBIO
BSF R7
;CALL DE500MS
;CALL CAMBIO
BSF R8
BSF R7
;CALL DE1S
;CALL CAMBIO
BCF R1
BCF R2
BCF R3
BCF R4
BCF R5
BCF R6
BCF R7
BCF R8
BSF G1
;CALL DE500MS
;CALL CAMBIO
BSF G2
BSF G1
;CALL DE500MS
;CALL CAMBIO
BSF G3
;CALL DE500MS
;CALL CAMBIO
BSF G4
;CALL DE500MS
;CALL CAMBIO
BSF G5
;CALL DE500MS
;CALL CAMBIO
BSF G6
BSF G5
;CALL DE500MS
;CALL CAMBIO
BSF G7
BSF G6
BSF G5
;CALL DE500MS
;CALL CAMBIO
BSF G8
;CALL DE1S
;CALL CAMBIO
BCF G1
BCF G2
BCF G3
BCF G4
BCF G5
BCF G6
BCF G7
BCF G8
BSF B1
;CALL DE500MS
BSF B2
BSF B1
;CALL CAMBIO
;CALL DE500MS
BSF B3
;CALL CAMBIO
;CALL DE500MS
BSF B4
;CALL CAMBIO
;CALL DE500MS
BSF B5
;CALL CAMBIO
;CALL DE500MS
BSF B6
BSF B5
;CALL CAMBIO
;CALL DE500MS
BSF B7
BSF B6
BSF B5
;CALL CAMBIO
;CALL DE500MS
BSF B8
;CALL CAMBIO
;CALL DE1S
BCF B1
BCF B2
BCF B3
BCF B4
BCF B5
BCF B6
BCF B7
BCF B8
GOTO RUTINA3
GOTO INICIO
CAMBIO BTFSS BOT
RETURN
INCF VAR,W
MOVWF VAR
movlw b'00000000'
movwf PORTA
movlw b'00000000'
movwf PORTB
movlw b'00000000'
movwf PORTC
CALL DE500MS
GOTO INICIO
END
Última edición por un moderador: