LIST P=16F6284A
#include P16F628A.inc
ERRORLEVEL 0, -302 ;suppress bank selection messages
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _MCLRE_OFF
;__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BOREN_OFF & _MCLRE_OFF & _LVP_OFF &_CPD_OFF
CBLOCK 0x20
;registros de rutina transmisión bits a registro de desplazamiento.
MASCARA
CONTADOR
ALMACEN ;aqui se almacenan los 8 bits que
;se meteran de forma serie a los
;registros de desplazamiento
PAGINA ;Guarda el valor de la dirección de memoria a
POSICION ;escribir o leer.
LETRA
FILA1
FILA2
FILA3
FILA4
FILA5
FILA6
FILA7
FILA8
FILA9
FILA10
FILA11
FILA12
FILA13
FILA14
FILA15
FILA16
FILA17
FILA18
FILA19
FILA20
FILA21
FILA22
FILA23
FILA24
FILA25
FILA26
FILA27
FILA28
FILA29
FILA30
FILA31
FILA32
FILA33
FILA34
FILA35
FILA36
FILA37
FILA38
FILA39
FILA40
;registro intermedio "buffer" para almacenar caracter 8x8 proveniente o de tabla o de memoria externa
;y que luego será pasado a los registros de pantalla.
FILA41
FILA42
FILA43
FILA44
FILA45
FILA46
FILA47
FILA48
;registros para diversos controles.
VECES
ROTACION
;registro para puntero indicador de la tabla.
PUNTERO
ENDC
BData EQU 3 ;patita por la que salen datos en serie
BClock EQU 2 ;patita por la que sale la señal de reloj
org 0x0000 ; establece el origen, 0x0000 para el 16F628
goto INICIO
ORG 0x20
;*****************************************************************************************************************
; INICIALIZACIÓN DEL PROGRAMA *
;*****************************************************************************************************************
INICIO
MOVLW 0x07
MOVWF CMCON ;desactivamos Comparadores
BSF STATUS,RP0 ;Seleccionamos banco 1
MOVLW b'00000000' ; Seleccionamos el puerto B como salida
MOVWF TRISB ; seleccionamos PORTB todo Como salida
MOVLW b'11100000' ; seleccionamos PORTA y pines que necesitamos como salida
MOVWF TRISA ;seleccionamos PORTA como salida
BSF STATUS, RP0 ;select bank 0
MOVLW 0x07
MOVWF CMCON ;desactivamos Comparadores
BCF STATUS,RP0 ; Selecciopnamos Banco 0
CLRF PORTA
CLRF PORTB
; bcf STATUS,2 ;baja bandera
;*****************************************************************************************************************
; HACEMOS UNA PRIMERA CARGA DE LOS REGISTROS PARA QUE EN PRIMERA PANTALLA NO SALGAN ILUMINADOS *
;*****************************************************************************************************************
movlw b'11111111'
movwf FILA1
movwf FILA2
movwf FILA3
movwf FILA4
movwf FILA5
movwf FILA6
movwf FILA7
movwf FILA8
movwf FILA9
movwf FILA10
movwf FILA11
movwf FILA12
movwf FILA13
movwf FILA14
movwf FILA15
movwf FILA16
movwf FILA17
movwf FILA18
movwf FILA19
movwf FILA20
movwf FILA21
movwf FILA22
movwf FILA23
movwf FILA24
movwf FILA25
movwf FILA26
movwf FILA27
movwf FILA28
movwf FILA29
movwf FILA30
movwf FILA31
movwf FILA32
movwf FILA33
movwf FILA34
movwf FILA35
movwf FILA36
movwf FILA37
movwf FILA38
movwf FILA39
movwf FILA40
movwf FILA41
movwf FILA42
movwf FILA43
movwf FILA44
movwf FILA45
movwf FILA46
movwf FILA47
movwf FILA48
;*****************************************************************************************************************
; AQUI HAGO LA LLAMADA A LA MEMORIA PARA IR SACANDO LOS DATOS Y CARGAR LOS REGISTROS *
;*****************************************************************************************************************
clrf PAGINA ;PAGINA 0x00
clrf POSICION ;POSICION 0x00
call I2C_EnviaStart ;Envía condición de Start.
movlw b'10100000' ;Envía dirección de escritura del esclavo.
call I2C_EnviaByte
movf PAGINA,W ;A partir de la dirección apuntada por los
call I2C_EnviaByte ;registros PAGINA
movf POSICION,W ;y POSICION.
call I2C_EnviaByte
call I2C_EnviaStop
call I2C_EnviaStart ;Envia condición de Start
movlw b'10100001' ;Indica a la memoria 24LC256 que va a
call I2C_EnviaByte ;proceder a la lectura.
MEMORIA call LeeOtroByte
movwf LETRA
goto COMPARAR
LeeOtroByte call I2C_LeeByte ;Lee la memoria 24LC256.
return
;*****************************************************************************************************************
; COMPARA DATO SACADO DE MEMORIA CON VALOR NUMERICO DEL CARACTER ASCII PARA ACTUAR EN CONSECUENCIA *
;*****************************************************************************************************************
COMPARAR
movlw d'48' ;letra 0
subwf LETRA,W
btfsc STATUS,2
goto CERO_
movlw d'49' ;letra 1
subwf LETRA,W
btfsc STATUS,2
goto UNO_
movlw d'50' ;letra 2
subwf LETRA,W
btfsc STATUS,2
goto DOS_
movlw d'51' ;letra 3
subwf LETRA,W
btfsc STATUS,2
goto TRES_
movlw d'52' ;letra 4
subwf LETRA,W
btfsc STATUS,2
goto CUATRO_
movlw d'53' ;letra 5
subwf LETRA,W
btfsc STATUS,2
goto CINCO_
movlw d'54' ;letra 6
subwf LETRA,W
btfsc STATUS,2
goto SEIS_
movlw d'55' ;letra 7
subwf LETRA,W
btfsc STATUS,2
goto SIETE_
movlw d'56' ;letra 8
subwf LETRA,W
btfsc STATUS,2
goto OCHO_
movlw d'57' ;letra 9
subwf LETRA,W
btfsc STATUS,2
goto NUEVE_
movlw d'65' ;letra A
subwf LETRA,W
btfsc STATUS,2
goto A_
movlw d'66' ;letra B
subwf LETRA,W
btfsc STATUS,2
goto B_
movlw d'67' ;letra C
subwf LETRA,W
btfsc STATUS,2
goto C_
movlw d'68' ;letra D
subwf LETRA,W
btfsc STATUS,2
goto D_
movlw d'69' ;letra E
subwf LETRA,W
btfsc STATUS,2
goto E_
movlw d'70' ;letra F
subwf LETRA,W
btfsc STATUS,2
goto F_
movlw d'71' ;letra G
subwf LETRA,W
btfsc STATUS,2
goto G_
movlw d'72' ;letra H
subwf LETRA,W
btfsc STATUS,2
goto H_
movlw d'73' ;letra I
subwf LETRA,W
btfsc STATUS,2
goto I_
movlw d'74' ;letra J
subwf LETRA,W
btfsc STATUS,2
goto J_
movlw d'75' ;letra K
subwf LETRA,W
btfsc STATUS,2
goto K_
movlw d'76' ;letra L
subwf LETRA,W
btfsc STATUS,2
goto L_
movlw d'77' ;letra M
subwf LETRA,W
btfsc STATUS,2
goto M_
movlw d'78' ;letra N
subwf LETRA,W
btfsc STATUS,2
goto N_
movlw d'209' ;letra Ñ
subwf LETRA,W
btfsc STATUS,2
goto Ñ_
movlw d'79' ;letra O
subwf LETRA,W
btfsc STATUS,2
goto O_
movlw d'80' ;letra P
subwf LETRA,W
btfsc STATUS,2
goto P_
movlw d'81' ;letra Q
subwf LETRA,W
btfsc STATUS,2
goto Q_
movlw d'82' ;letra R
subwf LETRA,W
btfsc STATUS,2
goto R_
movlw d'83' ;letra S
subwf LETRA,W
btfsc STATUS,2
goto S_
movlw d'84' ;letra T
subwf LETRA,W
btfsc STATUS,2
goto T_
movlw d'85' ;letra U
subwf LETRA,W
btfsc STATUS,2
goto U_
movlw d'86' ;letra V
subwf LETRA,W
btfsc STATUS,2
goto V_
movlw d'87' ;letra W
subwf LETRA,W
btfsc STATUS,2
goto W_
movlw d'88' ;letra X
subwf LETRA,W
btfsc STATUS,2
goto X_
movlw d'89' ;letra Y
subwf LETRA,W
btfsc STATUS,2
goto Y_
movlw d'90' ;letra Z
subwf LETRA,W
btfsc STATUS,2
goto Z_
movlw d'97' ;letra a
subwf LETRA,W
btfsc STATUS,2
goto a_
movlw d'98' ;letra b
subwf LETRA,W
btfsc STATUS,2
goto b_
movlw d'99' ;letra c
subwf LETRA,W
btfsc STATUS,2
goto c_
movlw d'100' ;letra d
subwf LETRA,W
btfsc STATUS,2
goto d_
movlw d'101' ;letra e
subwf LETRA,W
btfsc STATUS,2
goto e_
movlw d'102' ; letra f
subwf LETRA,W
btfsc STATUS,2
goto f_
movlw d'103' ;letra g
subwf LETRA,W
btfsc STATUS,2
goto g_
movlw d'104' ;letra h
subwf LETRA,W
btfsc STATUS,2
goto h_
movlw d'105' ;letra i
subwf LETRA,W
btfsc STATUS,2
goto i_
movlw d'106' ;letra j
subwf LETRA,W
btfsc STATUS,2
goto j_
movlw d'107' ;letra k
subwf LETRA,W
btfsc STATUS,2
goto k_
movlw d'108' ;letra l
subwf LETRA,W
btfsc STATUS,2
goto l_
movlw d'109' ;letra m
subwf LETRA,W
btfsc STATUS,2
goto m_
movlw d'110' ;letra n
subwf LETRA,W
btfsc STATUS,2
goto n_
movlw d'241' ;letra ñ
subwf LETRA,W
btfsc STATUS,2
goto ñ_
movlw d'111' ;letra o
subwf LETRA,W
btfsc STATUS,2
goto o_
movlw d'112' ;letra p
subwf LETRA,W
btfsc STATUS,2
goto p_
movlw d'113' ;letra q
subwf LETRA,W
btfsc STATUS,2
goto q_
movlw d'114' ;letra r
subwf LETRA,W
btfsc STATUS,2
goto r_
movlw d'115' ;letra s
subwf LETRA,W
btfsc STATUS,2
goto s_
movlw d'116' ;letra t
subwf LETRA,W
btfsc STATUS,2
goto t_
movlw d'117' ;letra u
subwf LETRA,W
btfsc STATUS,2
goto u_
movlw d'118' ;letra v
subwf LETRA,W
btfsc STATUS,2
goto v_
movlw d'119' ;letra w
subwf LETRA,W
btfsc STATUS,2
goto w_
movlw d'120' ;letra x
subwf LETRA,W
btfsc STATUS,2
goto x_
movlw d'121' ;letra y
subwf LETRA,W
btfsc STATUS,2
goto y_
movlw d'122' ;letra z
subwf LETRA,W
btfsc STATUS,2
goto z_
movlw d'44' ;COMA
subwf LETRA,W
btfsc STATUS,2
goto COMA_
movlw d'46' ; PUNTO
subwf LETRA,W
btfsc STATUS,2
goto PUNTO_
movlw d'32' ;ESPACIO
subwf LETRA,W
btfsc STATUS,2
goto ESPACIO_
movlw d'58' ;DOS PUNTOS
subwf LETRA,W
btfsc STATUS,2
goto DOSPUNTOS_
movlw d'61' ;IGUAL
subwf LETRA,W
btfsc STATUS,2
goto IGUAL_
movlw d'43' ;MAS
subwf LETRA,W
btfsc STATUS,2
goto MAS_
; movlw d'45' ;MENOS
; subwf LETRA,W
; btfsc STATUS,2
; goto MENOS_
; movlw d'42' ;POR
; subwf LETRA,W
; btfsc STATUS,2
; goto POR_
; movlw d'60' ;IZQUIEDA
; subwf LETRA,W
; btfsc STATUS,2
; goto IZQUIERDA_
; movlw d'62' ;DERECHA
; subwf LETRA,W
; btfsc STATUS,2
; goto DERECHA_
movlw d'255'
subwf LETRA,
btfsc STATUS,2
goto NEGRO_
goto INICIO
;*****************************************************************************************************************
; AQUÍ SE CARGAN LOS REGISTROS DEL BUFFER QUE SERAN PRESENTADOS EN LA MATRIZ *
;*****************************************************************************************************************
CERO_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'106'
movwf FILA44
movlw D'114'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
UNO_ bcf STATUS,2
movlw D'24'
movwf FILA41
movlw D'56'
movwf FILA42
movlw D'24'
movwf FILA43
movlw D'24'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'24'
movwf FILA46
movlw D'24'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
DOS_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'70'
movwf FILA42
movlw D'6'
movwf FILA43
movlw D'12'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'50'
movwf FILA46
movlw D'126'
movwf FILA47
movlw D'126'
movwf FILA48
goto REGISTROS
TRES_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'70'
movwf FILA42
movlw D'6'
movwf FILA43
movlw D'28'
movwf FILA44
movlw D'28'
movwf FILA45
movlw D'6'
movwf FILA46
movlw D'70'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
CUATRO_ bcf STATUS,2
movlw D'4'
movwf FILA41
movlw D'12'
movwf FILA42
movlw D'20'
movwf FILA43
movlw D'36'
movwf FILA44
movlw D'62'
movwf FILA45
movlw D'4'
movwf FILA46
movlw D'4'
movwf FILA47
movlw D'14'
movwf FILA48
goto REGISTROS
CINCO_ bcf STATUS,2
movlw D'62'
movwf FILA41
movlw D'48'
movwf FILA42
movlw D'48'
movwf FILA43
movlw D'60'
movwf FILA44
movlw D'6'
movwf FILA45
movlw D'6'
movwf FILA46
movlw D'38'
movwf FILA47
movlw D'28'
movwf FILA48
goto REGISTROS
SEIS_ bcf STATUS,2
movlw D'28'
movwf FILA41
movlw D'50'
movwf FILA42
movlw D'48'
movwf FILA43
movlw D'60'
movwf FILA44
movlw D'54'
movwf FILA45
movlw D'54'
movwf FILA46
movlw D'54'
movwf FILA47
movlw D'28'
movwf FILA48
goto REGISTROS
SIETE_ bcf STATUS,2
movlw D'62'
movwf FILA41
movlw D'2'
movwf FILA42
movlw D'6'
movwf FILA43
movlw D'12'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'48'
movwf FILA46
movlw D'48'
movwf FILA47
movlw D'48'
movwf FILA48
goto REGISTROS
OCHO_ bcf STATUS,2
movlw D'28'
movwf FILA41
movlw D'34'
movwf FILA42
movlw D'34'
movwf FILA43
movlw D'28'
movwf FILA44
movlw D'28'
movwf FILA45
movlw D'34'
movwf FILA46
movlw D'34'
movwf FILA47
movlw D'28'
movwf FILA48
goto REGISTROS
NUEVE_ bcf STATUS,2
movlw D'28'
movwf FILA41
movlw D'38'
movwf FILA42
movlw D'38'
movwf FILA43
movlw D'38'
movwf FILA44
movlw D'30'
movwf FILA45
movlw D'6'
movwf FILA46
movlw D'38'
movwf FILA47
movlw D'28'
movwf FILA48
goto REGISTROS
A_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'126'
movwf FILA44
movlw D'126'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
B_ bcf STATUS,2
movlw D'124'
movwf FILA41
movlw D'102'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'124'
movwf FILA44
movlw D'124'
movwf FILA45
movlw D'102'
movwf FILA46
movlw D'102'
movwf FILA47
movlw D'124'
movwf FILA48
goto REGISTROS
C_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'96'
movwf FILA43
movlw D'96'
movwf FILA44
movlw D'96'
movwf FILA45
movlw D'96'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
D_ bcf STATUS,2
movlw D'120'
movwf FILA41
movlw D'100'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'102'
movwf FILA44
movlw D'102'
movwf FILA45
movlw D'102'
movwf FILA46
movlw D'100'
movwf FILA47
movlw D'120'
movwf FILA48
goto REGISTROS
E_ bcf STATUS,2
movlw D'126'
movwf FILA41
movlw D'96'
movwf FILA42
movlw D'96'
movwf FILA43
movlw D'124'
movwf FILA44
movlw D'124'
movwf FILA45
movlw D'96'
movwf FILA46
movlw D'96'
movwf FILA47
movlw D'126'
movwf FILA48
goto REGISTROS
F_ bcf STATUS,2
movlw D'126'
movwf FILA41
movlw D'96'
movwf FILA42
movlw D'96'
movwf FILA43
movlw D'124'
movwf FILA44
movlw D'124'
movwf FILA45
movlw D'96'
movwf FILA46
movlw D'96'
movwf FILA47
movlw D'96'
movwf FILA48
goto REGISTROS
G_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'96'
movwf FILA43
movlw D'96'
movwf FILA44
movlw D'110'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
H_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'126'
movwf FILA44
movlw D'126'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
I_ bcf STATUS,2
movlw D'126'
movwf FILA41
movlw D'126'
movwf FILA42
movlw D'24'
movwf FILA43
movlw D'24'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'24'
movwf FILA46
movlw D'126'
movwf FILA47
movlw D'126'
movwf FILA48
goto REGISTROS
J_ bcf STATUS,2
movlw D'62'
movwf FILA41
movlw D'62'
movwf FILA42
movlw D'12'
movwf FILA43
movlw D'12'
movwf FILA44
movlw D'12'
movwf FILA45
movlw D'44'
movwf FILA46
movlw D'60'
movwf FILA47
movlw D'24'
movwf FILA48
goto REGISTROS
K_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'100'
movwf FILA42
movlw D'104'
movwf FILA43
movlw D'120'
movwf FILA44
movlw D'120'
movwf FILA45
movlw D'100'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
L_ bcf STATUS,2
movlw D'96'
movwf FILA41
movlw D'96'
movwf FILA42
movlw D'96'
movwf FILA43
movlw D'96'
movwf FILA44
movlw D'96'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'102'
movwf FILA47
movlw D'126'
movwf FILA48
goto REGISTROS
M_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'118'
movwf FILA42
movlw D'106'
movwf FILA43
movlw D'106'
movwf FILA44
movlw D'98'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
N_ bcf STATUS,2
movlw D'102'
movwf FILA41
movlw D'118'
movwf FILA42
movlw D'126'
movwf FILA43
movlw D'110'
movwf FILA44
movlw D'102'
movwf FILA45
movlw D'102'
movwf FILA46
movlw D'102'
movwf FILA47
movlw D'102'
movwf FILA48
goto REGISTROS
Ñ_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'114'
movwf FILA44
movlw D'106'
movwf FILA45
movlw D'102'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
O_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'102'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'102'
movwf FILA44
movlw D'102'
movwf FILA45
movlw D'102'
movwf FILA46
movlw D'102'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
P_ bcf STATUS,2
movlw D'124'
movwf FILA41
movlw D'102'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'102'
movwf FILA44
movlw D'124'
movwf FILA45
movlw D'96'
movwf FILA46
movlw D'96'
movwf FILA47
movlw D'96'
movwf FILA48
goto REGISTROS
Q_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'98'
movwf FILA44
movlw D'98'
movwf FILA45
movlw D'106'
movwf FILA46
movlw D'100'
movwf FILA47
movlw D'58'
movwf FILA48
goto REGISTROS
R_ bcf STATUS,2
movlw D'124'
movwf FILA41
movlw D'102'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'102'
movwf FILA44
movlw D'124'
movwf FILA45
movlw D'104'
movwf FILA46
movlw D'100'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
S_ bcf STATUS,2
movlw D'60'
movwf FILA41
movlw D'102'
movwf FILA42
movlw D'96'
movwf FILA43
movlw D'96'
movwf FILA44
movlw D'60'
movwf FILA45
movlw D'6'
movwf FILA46
movlw D'70'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
T_ bcf STATUS,2
movlw D'126'
movwf FILA41
movlw D'126'
movwf FILA42
movlw D'24'
movwf FILA43
movlw D'24'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'24'
movwf FILA46
movlw D'24'
movwf FILA47
movlw D'24'
movwf FILA48
goto REGISTROS
U_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'98'
movwf FILA44
movlw D'98'
movwf FILA45
movlw D'98'
movwf FILA46
movlw D'126'
movwf FILA47
movlw D'60'
movwf FILA48
goto REGISTROS
V_ bcf STATUS,2
movlw D'102'
movwf FILA41
movlw D'102'
movwf FILA42
movlw D'102'
movwf FILA43
movlw D'102'
movwf FILA44
movlw D'102'
movwf FILA45
movlw D'102'
movwf FILA46
movlw D'36'
movwf FILA47
movlw D'24'
movwf FILA48
goto REGISTROS
W_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'98'
movwf FILA44
movlw D'106'
movwf FILA45
movlw D'106'
movwf FILA46
movlw D'118'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
X_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'36'
movwf FILA43
movlw D'24'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'36'
movwf FILA46
movlw D'98'
movwf FILA47
movlw D'98'
movwf FILA48
goto REGISTROS
Y_ bcf STATUS,2
movlw D'98'
movwf FILA41
movlw D'98'
movwf FILA42
movlw D'98'
movwf FILA43
movlw D'60'
movwf FILA44
movlw D'24'
movwf FILA45
movlw D'24'
movwf FILA46
movlw D'24'
movwf FILA47
movlw D'24'
movwf FILA48
goto REGISTROS
Z_ bcf STATUS,2
movlw D'126'
movwf FILA41
movlw D'126'
movwf FILA42
movlw D'4'
movwf FILA43
movlw D'8'
movwf FILA44
movlw D'16'
movwf FILA45
movlw D'32'
movwf FILA46
movlw D'126'
movwf FILA47
movlw D'126'
movwf FILA48
goto REGISTROS
a_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xE3
movwf FILA44
movlw 0xFD
movwf FILA45
movlw 0xE1
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xE1
movwf FILA48
goto REGISTROS
b_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xDF
movwf FILA42
movlw 0xDF
movwf FILA43
movlw 0xDF
movwf FILA44
movlw 0xD3
movwf FILA45
movlw 0xCD
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xC3
movwf FILA48
goto REGISTROS
c_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xE3
movwf FILA44
movlw 0xDF
movwf FILA45
movlw 0xDF
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xE3
movwf FILA48
goto REGISTROS
d_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFD
movwf FILA42
movlw 0xFD
movwf FILA43
movlw 0xFD
movwf FILA44
movlw 0xE5
movwf FILA45
movlw 0xD9
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xE1
movwf FILA48
goto REGISTROS
e_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xE3
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xC1
movwf FILA46
movlw 0xDF
movwf FILA47
movlw 0xE3
movwf FILA48
goto REGISTROS
f_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xF3
movwf FILA42
movlw 0xED
movwf FILA43
movlw 0xEF
movwf FILA44
movlw 0xC7
movwf FILA45
movlw 0xEF
movwf FILA46
movlw 0xEF
movwf FILA47
movlw 0xEF
movwf FILA48
goto REGISTROS
g_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xE1
movwf FILA43
movlw 0xDD
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xE1
movwf FILA46
movlw 0xFD
movwf FILA47
movlw 0xE3
movwf FILA48
goto REGISTROS
h_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xDF
movwf FILA42
movlw 0xDF
movwf FILA43
movlw 0xD3
movwf FILA44
movlw 0xCD
movwf FILA45
movlw 0xDD
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xDD
movwf FILA48
goto REGISTROS
i_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xF7
movwf FILA43
movlw 0xFF
movwf FILA44
movlw 0xF7
movwf FILA45
movlw 0xF7
movwf FILA46
movlw 0xF7
movwf FILA47
movlw 0xF7
movwf FILA48
goto REGISTROS
j_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFB
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xF3
movwf FILA44
movlw 0xFB
movwf FILA45
movlw 0xFB
movwf FILA46
movlw 0xDB
movwf FILA47
movlw 0xE7
movwf FILA48
goto REGISTROS
k_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xDF
movwf FILA42
movlw 0xDF
movwf FILA43
movlw 0xDB
movwf FILA44
movlw 0xD7
movwf FILA45
movlw 0xC7
movwf FILA46
movlw 0xD7
movwf FILA47
movlw 0xDB
movwf FILA48
goto REGISTROS
l_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xE7
movwf FILA42
movlw 0xF7
movwf FILA43
movlw 0xF7
movwf FILA44
movlw 0xF7
movwf FILA45
movlw 0xF7
movwf FILA46
movlw 0xF7
movwf FILA47
movlw 0xE3
movwf FILA48
goto REGISTROS
m_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xCB
movwf FILA44
movlw 0xD5
movwf FILA45
movlw 0xD5
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xDD
movwf FILA48
goto REGISTROS
n_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xD3
movwf FILA44
movlw 0xCD
movwf FILA45
movlw 0xDD
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xDD
movwf FILA48
goto REGISTROS
ñ_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xE3
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xD3
movwf FILA44
movlw 0xCD
movwf FILA45
movlw 0xDD
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xDD
movwf FILA48
goto REGISTROS
o_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xE3
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xDD
movwf FILA46
movlw 0xDD
movwf FILA47
movlw 0xE3
movwf FILA48
goto REGISTROS
p_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xC3
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xC3
movwf FILA46
movlw 0xDF
movwf FILA47
movlw 0xDF
movwf FILA48
goto REGISTROS
q_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xE5
movwf FILA44
movlw 0xD9
movwf FILA45
movlw 0xE1
movwf FILA46
movlw 0xFD
movwf FILA47
movlw 0xFD
movwf FILA48
goto REGISTROS
r_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xD3
movwf FILA44
movlw 0xCD
movwf FILA45
movlw 0xDF
movwf FILA46
movlw 0xDF
movwf FILA47
movlw 0xDF
movwf FILA48
goto REGISTROS
s_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xE3
movwf FILA44
movlw 0xDF
movwf FILA45
movlw 0xE3
movwf FILA46
movlw 0xFD
movwf FILA47
movlw 0xC3
movwf FILA48
goto REGISTROS
t_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xEF
movwf FILA42
movlw 0xEF
movwf FILA43
movlw 0xC7
movwf FILA44
movlw 0xEF
movwf FILA45
movlw 0xEF
movwf FILA46
movlw 0xED
movwf FILA47
movlw 0xF3
movwf FILA48
goto REGISTROS
u_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xDD
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xDD
movwf FILA46
movlw 0xD9
movwf FILA47
movlw 0xE5
movwf FILA48
goto REGISTROS
v_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xDD
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xDD
movwf FILA46
movlw 0xEB
movwf FILA47
movlw 0xF7
movwf FILA48
goto REGISTROS
w_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xDD
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xD5
movwf FILA46
movlw 0xD5
movwf FILA47
movlw 0xEB
movwf FILA48
goto REGISTROS
x_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'0'
movwf FILA43
movlw D'34'
movwf FILA44
movlw D'20'
movwf FILA45
movlw D'8'
movwf FILA46
movlw D'20'
movwf FILA47
movlw D'34'
movwf FILA48
goto REGISTROS
y_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xDD
movwf FILA44
movlw 0xDD
movwf FILA45
movlw 0xE1
movwf FILA46
movlw 0xFD
movwf FILA47
movlw 0xE3
movwf FILA48
goto REGISTROS
z_ bcf STATUS,2
movlw 0xFF
movwf FILA41
movlw 0xFF
movwf FILA42
movlw 0xFF
movwf FILA43
movlw 0xC1
movwf FILA44
movlw 0xFB
movwf FILA45
movlw 0xF7
movwf FILA46
movlw 0xEF
movwf FILA47
movlw 0xC1
movwf FILA48
goto REGISTROS
COMA_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'0'
movwf FILA43
movlw D'0'
movwf FILA44
movlw D'96'
movwf FILA45
movlw D'96'
movwf FILA46
movlw D'32'
movwf FILA47
movlw D'64'
movwf FILA48
goto REGISTROS
PUNTO_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'0'
movwf FILA43
movlw D'0'
movwf FILA44
movlw D'0'
movwf FILA45
movlw D'24'
movwf FILA46
movlw D'24'
movwf FILA47
movlw D'0'
movwf FILA48
goto REGISTROS
ESPACIO_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'0'
movwf FILA43
movlw D'0'
movwf FILA44
movlw D'0'
movwf FILA45
movlw D'0'
movwf FILA46
movlw D'0'
movwf FILA47
movlw D'0'
movwf FILA48
goto REGISTROS
DOSPUNTOS_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'48'
movwf FILA43
movlw D'48'
movwf FILA44
movlw D'0'
movwf FILA45
movlw D'48'
movwf FILA46
movlw D'48'
movwf FILA47
movlw D'0'
movwf FILA48
goto REGISTROS
IGUAL_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'0'
movwf FILA42
movlw D'56'
movwf FILA43
movlw D'56'
movwf FILA44
movlw D'0'
movwf FILA45
movlw D'56'
movwf FILA46
movlw D'56'
movwf FILA47
movlw D'0'
movwf FILA48
goto REGISTROS
MAS_ bcf STATUS,2
movlw D'0'
movwf FILA41
movlw D'24'
movwf FILA42
movlw D'24'
movwf FILA43
movlw D'126'
movwf FILA44
movlw D'126'
movwf FILA45
movlw D'24'
movwf FILA46
movlw D'24'
movwf FILA47
movlw D'0'
movwf FILA48
goto REGISTROS
;MENOS_ bcf STATUS,2
; movlw D'0'
; movwf FILA41
; movlw D'0'
; movwf FILA42
; movlw D'0'
; movwf FILA43
; movlw D'60'
; movwf FILA44
; movlw D'60'
; movwf FILA45
; movlw D'0'
; movwf FILA46
; movlw D'0'
; movwf FILA47
; movlw D'0'
; movwf FILA48
; goto REGISTROS
;POR_ bcf STATUS,2
; movlw D'0'
; movwf FILA41
; movlw D'66'
; movwf FILA42
; movlw D'36'
; movwf FILA43
; movlw D'24'
; movwf FILA44
; movlw D'24'
; movwf FILA45
; movlw D'36'
; movwf FILA46
; movlw D'66'
; movwf FILA47
; movlw D'0'
; movwf FILA48
; goto REGISTROS
;IZQUIERDA_ bcf STATUS,2
; movlw D'10'
; movwf FILA41
; movlw D'20'
; movwf FILA42
; movlw D'40'
; movwf FILA43
; movlw D'80'
; movwf FILA44
; movlw D'80'
; movwf FILA45
; movlw D'40'
; movwf FILA46
; movlw D'20'
; movwf FILA47
; movlw D'10'
; movwf FILA48
; goto REGISTROS
;DERECHA_ bcf STATUS,2
; movlw D'80'
; movwf FILA41
; movlw D'40'
; movwf FILA42
; movlw D'20'
; movwf FILA43
; movlw D'10'
; movwf FILA44
; movlw D'10'
; movwf FILA45
; movlw D'20'
; movwf FILA46
; movlw D'40'
; movwf FILA47
; movlw D'80'
; movwf FILA48
; goto REGISTROS
NEGRO_ goto INICIO
;*****************************************************************************************************************
; AQUÍ SE SACAN LOS CARACTERES QUE IRAN A LA MATRIZ *
;*****************************************************************************************************************
REGISTROS call Recarga
movlw d'8' ;d'8'
movwf ROTACION
Caracter movf FILA33,0 ;0
movwf ALMACEN
call TX
movf FILA25,0
movwf ALMACEN
call TX
movf FILA17,0 ;0
movwf ALMACEN
call TX
movf FILA9,0
movwf ALMACEN
call TX
movf FILA1,0
movwf ALMACEN
call TX
movlw b'11111110'
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA34,0
movwf ALMACEN
call TX
movf FILA26,0
movwf ALMACEN
call TX
movf FILA18,0
movwf ALMACEN
call TX
movf FILA10,0
movwf ALMACEN
call TX
movf FILA2,0
movwf ALMACEN
call TX
movlw b'11111101' ; b'11111101'
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA35,0
movwf ALMACEN
call TX
movf FILA27,0
movwf ALMACEN
call TX
movf FILA19,0
movwf ALMACEN
call TX
movf FILA11,0
movwf ALMACEN
call TX
movf FILA3,0
movwf ALMACEN
call TX
movlw b'11111011' ;b'11111011' activo fila 3
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA36,0
movwf ALMACEN
call TX
movf FILA28,0
movwf ALMACEN
call TX
movf FILA20,0
movwf ALMACEN
call TX
movf FILA12,0
movwf ALMACEN
call TX
movf FILA4,0
movwf ALMACEN
call TX
movlw b'11110111' ;b'11110111' activo fila 4
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA37,0
movwf ALMACEN
call TX
movf FILA29,0
movwf ALMACEN
call TX
movf FILA21,0
movwf ALMACEN
call TX
movf FILA13,0
movwf ALMACEN
call TX
movf FILA5,0
movwf ALMACEN
call TX
movlw b'11101111' ;b'11101111' activo fila 5
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA38,0
movwf ALMACEN
call TX
movf FILA30,0
movwf ALMACEN
call TX
movf FILA22,0
movwf ALMACEN
call TX
movf FILA14,0
movwf ALMACEN
call TX
movf FILA6,0
movwf ALMACEN
call TX
movlw b'11011111' ;b'11011111'activo fila 6
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA39,0
movwf ALMACEN
call TX
movf FILA31,0
movwf ALMACEN
call TX
movf FILA23,0
movwf ALMACEN
call TX
movf FILA15,0
movwf ALMACEN
call TX
movf FILA7,0
movwf ALMACEN
call TX
movlw b'10111111' ;b'10111111' ; activo fila 7
movwf PORTB
call Retardo_2ms ;y espero 2 ms
movf FILA40,0
movwf ALMACEN
call TX
movf FILA32,0
movwf ALMACEN
call TX
movf FILA24,0
movwf ALMACEN
call TX
movf FILA16,0
movwf ALMACEN
call TX
movf FILA8,0
movwf ALMACEN
call TX
movlw b'01111111' ;b'01111111'activo fila 8
movwf PORTB
call Retardo_2ms ;y espero 2 ms
decfsz VECES,F ;Es el tiempo que es mostrado en pantalla el caracter.
goto Caracter ;vuelve a mostrar el caracter porque no ha pasado el tiempo
call Rota ;si ha pasado el tiempo suficiente rotamos el caracter.
call Recarga ;cargamos de nuevo el valor del tiempo del caracter
decfsz ROTACION,F ;Número de rotaciones para coger otro caracter.
goto Caracter
goto MEMORIA ;han pasado las rotaciones pues coje otra letra.
;*****************************************************************************************************************
; RECARGAMOS REGISTRO "VECES" CAMBIANDO EL DATO DAMOS MAS O MENOS VELOCIDAD AL LETRERO *
;*****************************************************************************************************************
Recarga movlw d'6' ;d'7' sale bien 6 cargamos de dato en "VECES" para indicar el tiempo
movwf VECES ;que se muestra en la matriz el caracter antes de las rotaciones.
return
;*****************************************************************************************************************
; RUTINA DE ROTACION A LA IZQUIERDA *
;*****************************************************************************************************************
Rota bcf STATUS,C
rlf FILA41,f
rlf FILA33,f
rlf FILA25,f
rlf FILA17,f
rlf FILA9,f
rlf FILA1,f
bcf STATUS,C
rlf FILA42,f
rlf FILA34,f
rlf FILA26,f
rlf FILA18,f
rlf FILA10,f
rlf FILA2,f
bcf STATUS,C
rlf FILA43,f
rlf FILA35,f
rlf FILA27,f
rlf FILA19,f
rlf FILA11,f
rlf FILA3,f
bcf STATUS,C
rlf FILA44,f
rlf FILA36,f
rlf FILA28,f
rlf FILA20,f
rlf FILA12,f
rlf FILA4,f
bcf STATUS,C
rlf FILA45,f
rlf FILA37,f
rlf FILA29,f
rlf FILA21,f
rlf FILA13,f
rlf FILA5,f
bcf STATUS,C
rlf FILA46,f
rlf FILA38,f
rlf FILA30,f
rlf FILA22,f
rlf FILA14,f
rlf FILA6,f
bcf STATUS,C
rlf FILA47,f
rlf FILA39,f
rlf FILA31,f
rlf FILA23,f
rlf FILA15,f
rlf FILA7,f
bcf STATUS,C
rlf FILA48,f
rlf FILA40,f
rlf FILA32,f
rlf FILA24,f
rlf FILA16,
rlf FILA8,f
return
;*****************************************************************************************************************
; RUTINA TRANSMISIÓN BITS A REGISTRO 74HC164 *
;*****************************************************************************************************************
TX movlw b'11111111' ; b'11111111'
movwf PORTB ;PORTB
movlw .8 ;pone 8 en W
movwf CONTADOR ;carga contador con 8
movlw b'00000001' ;cargo 1 en mascara
movwf MASCARA
TXLP movf ALMACEN,0
andwf MASCARA,0 ;Hacemos ByteActual (AND) FilaActual para determinar
;el bit a enviar.
subwf MASCARA,0 ;[ByteActual(AND)FilaActual] - FilaActual, si esto es
;cero el bit a enviar es 1, sino 0.
bcf PORTA,BData ;Primero cargamos un 0.
btfsc STATUS,Z ;La operacion anterior es 0?
bsf PORTA,BData ;Si, cargamos un 1 en el bit
bsf PORTA,BClock ;Generamos clock.
nop ;demora
bcf PORTA,BClock
bcf STATUS,C
rlf MASCARA,1 ;1
decfsz CONTADOR,F ;decrementa contador si es 0 salta
goto TXLP
return
;*****************************************************************************************************************
INCLUDE <BUS_I2C.INC> ;subrutinas protocolo I2C
INCLUDE <RETARDOS.INC> ;subrutinas de control de tiempos de retardo.
END