DEFINE OSC 4
LINEA var byte[32]
CHAR VAR BYTE[7]
CHAR_ACT VAR BYTE ' puntero de caracter
CHAR_LENGTH_ACT VAR BYTE 'puntero de la longitud del caracter
CHAR_LENGTH var byte ' longitud de la longitud
Caracter var byte
Counter1 var byte
Counter2 var byte
Counter3 var byte
Counter4 var byte
'declaracion de alias
DATOS var PORTA.0
CLOCK var PORTA.1
'Inicializacion de los datos
TRISB = 0
TRISA = 0
linea[1]=$FF
linea[2]=$FF
linea[3]=$FF
linea[4]=$FF
linea[5]=$FF
linea[6]=$FF
linea[7]=$FF
linea[8]=$FF
linea[9]=$FF
linea[10]=$FF
linea[11]=$FF
linea[12]=$FF
linea[13]=$FF
linea[14]=$FF
linea[15]=$FF
linea[16]=$FF
linea[17]=$FF
linea[18]=$FF
linea[19]=$FF
linea[20]=$FF
linea[21]=$FF
linea[22]=$FF
linea[23]=$FF
linea[24]=$FF
linea[25]=$FF
linea[26]=$FF
linea[27]=$FF
linea[28]=$FF
linea[29]=$FF
linea[30]=$FF
linea[31]=$FF
linea[32]=$FF
char_act=0
counter3=0
counter4=0
counter2=1
char_length_act = 1
low clock
low datos
DATA @0,"Dalisss" 'aca guardamos nuetro programa, es modificable al gusto
read char_act,caracter
gosub tabla_char
'inicio del programa
Inicio:
MENSAJE:
linea[1]=char[char_length_act]
IF CHAR_LENGTh_act = char_length then
char_act = char_act + 1
Mens_Salto1:
read char_act,caracter
if caracter=$FF then
char_act=0
goto mens_salto1
endif
gosub tabla_char
char_length_act=0
endif
Img:
counter1=0
LineH:
PORTB = $FF
counter1 = counter1 + 1 'envia LA ACTIVACION del registro
if counter1 = counter2 then 'serial paralelo
gosub send_data0 'para activar la linea vertical
else
gosub send_data1
endif
if counter1 = 32 then goto LineV
goto lineh
LineV:
PORTB = LINEA[COUNTER2] 'determina la posicion activa horizontal
pauseus 500 'y genera la activacion de los leds verticales
if counter2 = 32 then
counter2 = 1
gosub send_data0
ELSE
counter2 = counter2 + 1
gosub send_data1
endif
Shift_Left:
if counter3 = 35 then
counter3 = 0
COUNTER4 = COUNTER4 + 1
if counter4 = 2 then ' 250 del counter3 *4 del
linea[32]=linea[31]'
linea[31]=linea[30]'
linea[30]=linea[29]'counter4 es aprox 0.5seg
linea[29]=linea[28]'si hay mas lineas
linea[28]=linea[27]'hay q agrandar losvectores
linea[27]=linea[26]'y cambiar por un for
linea[26]=linea[25]
linea[25]=linea[24]
linea[24]=linea[23]
linea[23]=linea[22]'counter4 es aprox 0.5seg
linea[22]=linea[21]'si hay mas lineas
linea[21]=linea[20]
linea[20]=linea[19]'y cambiar por un for
linea[19]=linea[18]
linea[18]=linea[17]
linea[17]=linea[16]
linea[16]=linea[15]'
linea[15]=linea[14]'counter4 es aprox 0.5seg
linea[14]=linea[13]'si hay mas lineas
linea[13]=linea[12]'hay q agrandar losvectores
linea[12]=linea[11]'y cambiar por un for
linea[11]=linea[10]
linea[10]=linea[9]
linea[9]=linea[8]
linea[8]=linea[7]'counter4 es aprox 0.5seg
linea[7]=linea[6]'si hay mas lineas
linea[6]=linea[5]'hay q agrandar los vectores
linea[5]=linea[4]'y cambiar por un for
linea[4]=linea[3]
linea[3]=linea[2]
linea[2]=linea[1]
counter4 = 0
char_length_act = char_length_act+1
GOTO INICIO
endif
ELSE
counter3 = counter3 + 1
endif
goto IMG
SEND_DATA0:
low datos
pauseus 2
low clock
pauseus 2
high clock
RETURN
SEND_DATA1:
HIGH DATOS
pauseus 2
low clock
pauseus 2
high clock
RETURN
'tabla de seleccion de caracter
TABLA_CHAR:
select case caracter
case " "
char_LENGTH=5
char[5]=$FF
char[4]=$FF
char[3]=$FF
char[2]=$FF
char[1]=$FF
case"1"
char_LENGTH=4
char[4]=$FF
char[3]=%1111110
char[2]=%0000000
char[1]=%1011110
case "2"
char_LENGTH=5
char[5]=$FF
char[4]=%1001110
char[3]=%0110110
char[2]=%0110110
char[1]=%1011000
case "3"
char_LENGTH=5
char[5]=$FF
char[4]=%1001001
char[3]=%0110110
char[2]=%0110110
char[1]=%1011101
case "4"
char_LENGTH=5
char[5]=$FF
char[4]=%1110111
char[3]=%0000000
char[2]=%1010111
char[1]=%1100111
case "5"
char_LENGTH=5
char[5]=$FF
char[4]=%0110001
char[3]=%0101110
char[2]=%0101110
char[1]=%0001110
case "6"
char_LENGTH=5
char[5]=$FF
char[4]=%1110001
char[3]=%1101110
char[2]=%0101110
char[1]=%1000001
case "7"
char_LENGTH=5
char[5]=$FF
char[4]=%0001111
char[3]=%0110011
char[2]=%0111100
char[1]=%0111111
case "8"
char_LENGTH=5
char[5]=$FF
char[4]=%1001001
char[3]=%0110110
char[2]=%0110110
char[1]=%1001001
case "9"
char_LENGTH=5
char[5]=$FF
char[4]=%1000001
char[3]=%0110110
char[2]=%0110111
char[1]=%1001111
case "0"
char_LENGTH=5
char[5]=$FF
char[4]=%1000001
char[3]=%0111110
char[2]=%0111110
char[1]=%1000001
case "@"
char_LENGTH=7
char[7]=$FF
char[6]=%1000001
char[5]=%0111010
char[4]=%0100010
char[3]=%0101010
char[2]=%0110110
char[1]=%1000001
case ":"
char_LENGTH=2
char[2]=$FF
char[1]=%1101011
case "["
char_LENGTH=3
char[3]=$FF
char[2]=%0111110
char[1]=%0000000
case "]"
char_LENGTH=3
char[3]=$FF
char[2]=%0000000
char[1]=%0111110
case "A"
char_LENGTH=5
char[5]=$FF
char[4]=%1000000
char[3]=%0110111
char[2]=%0110111
char[1]=%1000000
case "B"
char_LENGTH=5
char[5]=$FF
char[4]=%1001001
char[3]=%0110110
char[2]=%0110110
char[1]=%0000000
case "C"
char_LENGTH=5
char[5]=$FF
char[4]=%1011101
char[3]=%0111110
char[2]=%0111110
char[1]=%1000001
case "D"
char_LENGTH=5
char[5]=$FF
char[4]=%1000001
char[3]=%0111110
char[2]=%0111110
char[1]=%0000000
case "E"
char_LENGTH=5
char[5]=$FF
char[4]=%0111110
char[3]=%0110110
char[2]=%0110110
char[1]=%0000000
case "F"
char_LENGTH=5
char[5]=$FF
char[4]=%0111111
char[3]=%0110111
char[2]=%0110111
char[1]=%0000000
case "G"
char_LENGTH=5
char[5]=$FF
char[4]=%1010001
char[3]=%0110110
char[2]=%0110110
char[1]=%1000001
case "H"
char_LENGTH=5
char[5]=$FF
char[4]=%0000000
char[3]=%1110111
char[2]=%1110111
char[1]=%0000000
case "I"
char_LENGTH=4
char[4]=$FF
char[3]=%0111110
char[2]=%0000000
char[1]=%0111110
case "J"
char_LENGTH=5
char[5]=$FF
char[4]=%0111111
char[3]=%0000001
char[2]=%0111110
char[1]=%0111101
case "K"
char_LENGTH=4
char[5]=$FF
char[3]=%0111110
char[3]=%1011101
char[2]=%1101011
char[1]=%0000000
case "L"
char_LENGTH=5
char[5]=$FF
char[4]=%1111100
char[3]=%1111110
char[2]=%1111110
char[1]=%0000000
case "M"
char_LENGTH=6
char[6]=$FF
char[5]=%0000000
char[4]=%1011111
char[3]=%1101111
char[2]=%1011111
char[1]=%0000000
case "M"
char_LENGTH=6
char[6]=$FF
char[5]=%0000000
char[4]=%1011111
char[3]=%1101111
char[2]=%1011111
char[1]=%0000000
case "N"
char_LENGTH=5
char[5]=$FF
char[4]=%0000000
char[3]=%1110011
char[2]=%1001111
char[1]=%0000000
case "O"
char_LENGTH=6
char[6]=$FF
char[5]=%1000001
char[4]=%0111110
char[3]=%0111110
char[2]=%0111110
char[1]=%1000001
case "P"
char_LENGTH=5
char[5]=$FF
char[4]=%1001111
char[3]=%0110111
char[2]=%0110111
char[1]=%0000000
case "Q"
char_LENGTH=6
char[6]=$FF
char[5]=%1111110
char[4]=%1000001
char[3]=%0111001
char[2]=%0111101
char[1]=%1000011
case "R"
char_LENGTH=5
char[5]=$FF
char[4]=%1001000
char[3]=%0110111
char[2]=%0110111
char[1]=%0000000
case "S"
char_LENGTH=5
char[5]=$FF
char[4]=%0111001
char[3]=%0110110
char[2]=%0110110
char[1]=%1001110
case "T"
char_LENGTH=5
char[5]=$FF
char[4]=%0111111
char[3]=%0000000
char[2]=%0000000
char[1]=%0111111
case "U"
char_LENGTH=6
char[6]=$FF
char[5]=%0000001
char[4]=%1111110
char[3]=%1111110
char[2]=%1111110
char[1]=%0000001
case "V"
char_LENGTH=6
char[6]=$FF
char[5]=%0000111
char[4]=%1111001
char[3]=%1111110
char[2]=%1111001
char[1]=%0000111
case "X"
char_LENGTH=5
char[5]=$FF
char[4]=%0001000
char[3]=%1110111
char[2]=%1110111
char[1]=%0001000
case "Y"
char_LENGTH=5
char[5]=$FF
char[4]=%0001111
char[3]=%1110000
char[2]=%1110000
char[1]=%0001111
case "Z"
char_LENGTH=5
char[5]=$FF
char[4]=%0011111
char[3]=%0100110
char[2]=%0110010
char[1]=%0111100
case else
char_LENGTH=5
CHAR[1]=$FF
CHAR[2]=$FF
CHAR[3]=$FF
CHAR[4]=$FF
CHAR[5]=$FF
end select
return
END