Está en la página 1de 5

#include <16f88.

h> // Tipo de microcontrolador


#fuses INTRC_I!"C#R // scilador interno! "C#R acti$o
#fuses N%&T!N'R(N&T // )in 'ro*nout reset ni %o*er up timer
#use fast_io+all, // #a confi-uraci.n de los puertos solo se hace
al principio.
#use dela/+cloc018", // 2elocidad del oscilador interno 8 "34
#define #oad %IN_'5 // #oad +)TC% am6os inte-rados, '5
#define Cl0 %IN_'1 // Cloc0 +)3C% am6os inte-rados, '1
#define dClm %IN_'7 // 8ata para las columnas +8) inte-rado 1, 'C7
#define d#in %IN_'9 // 8ata para las lineas +8) inte-rado 7, '9
char "emoria:;6<= // ;6 '/tes para la memoria +5 > ;?,
char 2isor:8<= // 8 para el $isor +8 columnas,
int1 fla-= // @la-s de control
int1 fla-7=
int indA= // Indice donde almacenarB las nue$as columnas.
int line= // #inea Cue a mostrar.
int time= // 2aria6les para el control de
int ptime= // la $elocidad de despla4amiento.
int t= // 2aria6le auAiliar.
$oid Car-a"em+char Dscii,=
$oid EuardaClm+char c,=
#int_rtcc
$oid isr+,F
int "ul1178= // Cada $e4 Cue ocurre la interrupcion
if+GGline>H,#ine15= // selecciona la si-uiente linea! si se pasa de H
$uel$e a 5.

if+GGptime>?,F // )uma 1 a ptime. )i se pasa de 75
ptime15= // lo pone en 5 / suma 1 a time.
if+GGtime>755,F // )i se pasa de 755
time15= // lo pone en 5
@la-1true= // / acti$a el fla-.
I
I


for+t15=t<8=tGG,F // 'ucle 5 > H +#ineas,

output_6it+d#in!JJ+2isor:#ine<K"ul,,= // d#in es seteado con el
$alor
// del 6it de la fila
actual.
if +#ine11t,output_hi-h+dClm,= // )i #ine es i-ual a t
// acti$a el 6it
correspondiente
else output_lo*+dClm,= // a la columna! sino lo
desacti$a.

output_lo*+Cl0,= //
output_hi-h+Cl0,= // Rota el contenido interno del HL3C?;?.

"ul>>11= // 8i$ide la mascara Cue compara con 2isor:<
+178!6L!97...,
I
output_lo*+#oad,=
output_hi-h+#oad,=// Ml contenido interno del inte-rado pasa a las
salidas.

I
$oid main+,F
int 0=
set_tris_a+5A55,=
set_tris_6+5A55,=
for +015=0<8=0GG,F
2isor:0<15=
I
for +015=0<;6=0GG,F
"emoria:0<15=
I // #impia la memoria / el $isor

fla-1true= // Dcti$o el fla- para Cue car-ue la memoria

setup_timer_5+RTCC_INTMRND#NRTCC_8I2_1,= // Confi-uraci.n del Timer5
ena6le_interrupts+int_rtcc,= // Interrupcion por Timer5
ena6le_interrupts+-lo6al,= // Interrupciones -lo6ales

doF
if +@la-,F // )i el fla- estB acti$ado
fla-71true= // Dcti$a el fla-7

for +015=0<8=0GG,F // %asa el contenido de las primeras 8
$isor:0<1"emoria:0<= // columnas en memoria al $isor
I

for +015=0<;?=0GG,F // Rota el contenido de toda la
memoria
"emoria:0<1"emoria:0G1<=// a la i4Cuierda 111G1! 717G1!
n1nG1...

if +"emoria:0<J15,F@la-71false=I // )i ha/ al-una columna Cue
no
// estO $acPa desacti$a el
fla-7
I
"emoria:;?<15= // #impia la ultima columna de la
memoria

if +@la-7,F // )i fla-7 estB acti$o
indA1H= // a partir de la columna H
Car-a"em+Q%ICR'TQ,= // escri6e %ICR'T
I
@la-1false= // 8esacti$a el fla-

I
I*hile +true,= // 'ucle infinito
I
$oid EuardaClm+char c,F
if +indA<;L,F
"emoria:indA<1c= // Euarda la columna en la u6icaci.n actual de
memoria
indAGG= // / aumenta el indice
I
I
$oid Car-a"em+char ascii,F // Car-a la memoria con el caracter deseado
s*itch +ascii,F

case+R'R,S
EuardaClm+5651111111,=
EuardaClm+5651111111,=
EuardaClm+5651551551,=
EuardaClm+5651551551,=
EuardaClm+5651111111,=
EuardaClm+5655115115,=
6rea0=

case+RCR,S
EuardaClm+5655111115,=
EuardaClm+5651111111,=
EuardaClm+5651555551,=
EuardaClm+5651555551,=
EuardaClm+5651155511,=
EuardaClm+5655155515,=
6rea0=
case+RIR,S
EuardaClm+5651555551,=
EuardaClm+5651555551,=
EuardaClm+5651111111,=
EuardaClm+5651111111,=
EuardaClm+5651555551,=
EuardaClm+5651555551,=
6rea0=
case+RR,S
EuardaClm+5655111115,=
EuardaClm+5651111111,=
EuardaClm+5651555551,=
EuardaClm+5651555551,=
EuardaClm+5651111111,=
EuardaClm+5655111115,=
6rea0=

case+R%R,S
EuardaClm+5651111111,=
EuardaClm+5651111111,=
EuardaClm+5655551551,=
EuardaClm+5655551551,=
EuardaClm+5655551111,=
EuardaClm+5655555115,=
6rea0=

case+RRR,S
EuardaClm+5651111111,=
EuardaClm+5651111111,=
EuardaClm+5655551551,=
EuardaClm+5655511551,=
EuardaClm+5651111111,=
EuardaClm+5651155115,=
6rea0=

case+RTR,S
EuardaClm+5655555511,=
EuardaClm+5655555551,=
EuardaClm+5651111111,=
EuardaClm+5651111111,=
EuardaClm+5655555551,=
EuardaClm+5655555511,=
6rea0=
I
EuardaClm+5655555555,=
OTRA
#fuses 3)! 3L! N(8T! N%RTMCT! N#2%
#use dela/+cloc01L8",
static int1 smille:H<:15<1F
+1!1!1!1!1!1!1!1!1!1,!
+1!1!5!5!1!1!5!5!1!1,!
+1!1!5!5!1!1!5!5!1!1,!
+1!1!1!1!1!1!1!1!1!1,!
+1!5!1!1!1!1!1!1!5!1,!
+1!1!5!5!5!5!5!5!1!1,!
+1!1!1!1!1!1!1!1!1!1,
I=
int -etCol%icture+int1 picture:H<:15<! int col,=
$oid main+$oid, F
int t=
setup_oscillator+)C_6L"3T,=
dela/_ms+155,=
t1-etCol%icture+smille!5,=
I
int -etCol%icture+int1 picture:H<:15<! int col,
F
int i=
int col_data15=
int1 6it_pict=
//int 6it_pict=
for+i15=i<H=iGG,
F
6it_pict1picture:i<:col<=
I
return col_data=//No le ha-ais caso
I

También podría gustarte