Hola amigos :
Tengo el siguiente problema, comenze a incursionar en el manejo de matrices de leds casi sin ningun conocimiento , ya pude programar algunas cosillas , pero ahora tengo un problema serio, queria hacer un programa en asembler para hacer aparecer letras en una matriz, en la simulacion me sale rebien tendria que aparecer una H , pero en la realidad solo se prende la primera columna de mi matriz y ahi se queda , reviso todo , mi PIC, mi codigo pero no encontre falla alguna, se que no es el PIC porque funciona con otros codigos que hize , talvez alguien me pueda ayudar a descifrar mi problema, agradecido de antemano.
Tengo el siguiente problema, comenze a incursionar en el manejo de matrices de leds casi sin ningun conocimiento , ya pude programar algunas cosillas , pero ahora tengo un problema serio, queria hacer un programa en asembler para hacer aparecer letras en una matriz, en la simulacion me sale rebien tendria que aparecer una H , pero en la realidad solo se prende la primera columna de mi matriz y ahi se queda , reviso todo , mi PIC, mi codigo pero no encontre falla alguna, se que no es el PIC porque funciona con otros codigos que hize , talvez alguien me pueda ayudar a descifrar mi problema, agradecido de antemano.
Código:
;= Autor : Sergio Ureña
;= Ultima modificacion : 22/08/07
;= Proyecto 2
;=
;= Oscilador XT 4MHz
;= Watchdog Timer Activado
;= Matriz de leds 7x5
list p=16f877 ; Se indica el tipo de procesador
#include <p16f877.inc> ; Se incluye la definicion de los registros internos en una libreria
; **** Configuracion de los FUSES ****
__CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_ON & _XT_OSC
ERRORLEVEL -302 ; elimina BANK WARNING
ERRORLEVEL -207 ; elimina LABEL AFTER COLUMN 1
PDel0 EQU 0x20 ; Reservamos memoria ram
PDel1 EQU 0x21
COL EQU 0x23 ; Columna a representar
ROTAR EQU 0x24 ; Posicion a rotar
AUX EQU 0x25
org 0x00 ; Inicio en el vector de Reset
goto INICIO ; Va a la primera instruccion del programa
; Descripcion: Delay 4000 ciclos
;-------------------------------------------------------------
DEMORA movlw .5 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .159 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
return ; 2+2 Fin.
;-------------------------------------------------------------
INICIO
clrf PORTB ; Borrado de lineas no utilizadas de puerto B
clrf PORTC ; Borrado de lineas no utilizadas de puerto C
bsf STATUS,RP0 ; Cambio al banco 1
movlw B'00000001' ; RB0 como entrada el resto salidas
movwf TRISB
movlw 0xE0 ; RA0 - RA4 son salidas el resto entradas
movwf TRISC
bcf STATUS,RP0 ; Cambio al banco 0
movlw .255
movwf AUX
MATRIZ
movlw 0x00
movwf COL
movlw 0x05
movwf ROTAR
movlw 0x01
movwf PORTC
decfsz AUX,1
goto BARRIDO
goto SLE
BARRIDO
call TABLA_DATOS
movwf PORTB
call DEMORA
bcf STATUS,C
incf COL,1
rlf PORTC,1
decfsz ROTAR,1
goto BARRIDO
goto MATRIZ
TABLA_DATOS
clrw
addwf COL,W
addwf PCL,f
CARACTER_H
retlw 0xFE
retlw 0x10
retlw 0x10
retlw 0x10
retlw 0xFE
SLE sleep
end ; Fin del programa
Última edición por un moderador: