You are on page 1of 4

Lectura de un teclado matricial

RA0/AN0
2
RA1/AN1
3
RA2/AN2/VREF-
4
RA4/T0CKI
6
RA5/AN4/SS
7
RE0/AN5/RD
8
RE1/AN6/WR
9
RE2/AN7/CS
10
OSC1/CLKIN
13
OSC2/CLKOUT
14
RC1/T1OSI/CCP2
16
RC2/CCP1
17
RC3/SCK/SCL
18
RD0/PSP0
19
RD1/PSP1
20
RB7/PGD
40
RB6/PGC
39
RB5
38
RB4
37
RB3/PG
36
RB2
35
RB1
34
RB0/INT
33
RD7/PSP7
30
RD6/PSP6
29
RD5/PSP5
28
RD4/PSP4
27
RD3/PSP3
22
RD2/PSP2
21
RC7/R!/DT
26
RC6/T!/CK
25
RC5/SDO
24
RC4/SDI/SDA
23
RA3/AN3/VREF"
5
RC0/T1OSO/T1CKI
15
CLR/V##/T$V
1
U1
PIC16F877
1 2 3
4 5 6
7 8 9
0 #
123
A
B
C
D
A
7
%A
13
B
1
%B
12
C
2
%C
11
D
6
%D
10
BI/RBO
4
%E
9
RBI
5
%F
15
LT
3
%G
14
U2
74LS48
;Este programa lee un teclado matricial de 4x3 y muestra el dgito oprimido en el display de 7
segmentos.
; ******** DEFINICIN DE !E"I#$!# %$I&I'(D#
pcl e)u *+,
status e)u *3
ptoa e)u *-
pto. e)u */
ptoc e)u *7
ptod e)u *0
ptoe e)u *1
trisa e)u 0-,
tris. e)u 0/,
trisc e)u 07,
trisd e)u 00,
trise e)u 01,
adcon2 e)u 13,
;De4nicion de .its utili5ados
5 e)u +
c e)u *
6 e)u *
tecla e)u 3c,
loops e)u 3d, ;utili5ado en retardos 7milisegundos8
loops+ e)u 3e, ;utili5ado en retardos
rota e)u 33, ;registro )ue se rota para en9iar ceros a las 4las
4las e)u 4*, ;contiene el numero de la 4la a pro.ar
; ************ Con4guracion para el simulador :roteus
list p;2/3077
<C:<(&& E=% >?*FCF?
<C:<>(&F E=% >?2FDF?
<C:<%::E!<+-/ E=% >?+FEF?
<C:<FF E=% >?3FFF?
<DE@%"<N E=% >?37FF?
<DE@%"<FF E=% >?3FFF?
<A!$<EN(@&E<N E=% >?3FFF?
<A!$<EN(@&E<FF E=% >?3DFF?
<C:D<N E=% >?3EFF?
<C:D<FF E=% >?3FFF?
<&B:<N E=% >?3FFF?
<&B:<FF E=% >?3F7F?
<@DEN<N E=% >?3FFF?
<@DEN<FF E=% >?3F@F?
<:A!$E<FF E=% >?3FFF?
<:A!$E<N E=% >?3FF7?
<AD$<N E=% >?3FFF?
<AD$<FF E=% >?3FF@?
<&:<#C E=% >?3FFC?
<C$<#C E=% >?3FFD?
<>#<#C E=% >?3FFE?
<!C<#C E=% >?3FFF?
<<CNFI" <C:<FF D <AD$<FF D <C$<#C D <:A!$E<N
; ***** INICI( :!"!(E(
org * ;el 9ector de reset es la direcciFn **
goto inicio ;se salta al inicio del programa

retarms mo963 loops ;retardo de milisegundos cargado desde a3uera
otro+ mo9l6 d?22*?
mo963 loops+
otro nop
nop
nop
nop
nop
nop
dec3s5 loops+G2
goto otro
dec3s5 loopsG2
goto otro+
return
; **** :rograma principal
inicio .s3 statusG- ;se u.ica en el segundo .anco de !(E
mo9l6 .?2222****? ;se programan puertos segHn circuitos
mo963 trisa
mo9l6 .?****2222?
mo963 tris.
mo9l6 .?22222222?
mo963 trisc
mo9l6 .?22222222?
mo963 trisd
mo9l6 .?222*2222?
mo963 trise
mo9l6 .?2222*222?
mo963 adcon2
.c3 statusG- ;se u.ica en el primer .anco de memoria !(E
mo9l6 **, ;para empe5ar se muestra un * en el display
mo963 tecla
mo9l6 .?222222?
mo963 ptoa
; **** Eostrar en el display la tecla
ciclo s6ap3 teclaG6 ;intercam.ia 4 .its altos y .aIos y )uedan en A
mo963 pto. ;pasa el 9alor de A al puerto @ 7display8

mo9l6 d?+-*?
call retarms
4la2 mo9l6 .?222*? ;inicia lectura del teclado por la 4la 2 + 3
mo963 ptoa
nop
mo93 pto.G6 ;leer las columnas conectadas al puerto @
mo963 4las
.t3ss 4lasG*
goto uno
.t3ss 4lasG2
goto dos
.t3ss 4lasG+
goto tres
goto 4la+
uno mo9l6 d?2?
mo963 tecla
goto ciclo
dos mo9l6 d?+?
mo963 tecla
goto ciclo
tres mo9l6 d?3?
mo963 tecla
goto ciclo
4la+ mo9l6 .?22*2? ;lectura de la 4la 4 - /
mo963 ptoa
nop
mo93 pto.G6 ;leer las columnas conectadas al puerto @
mo963 4las
.t3ss 4lasG*
goto cuatro
.t3ss 4lasG2
goto cinco
.t3ss 4lasG+
goto seis
goto 4la3
cuatro mo9l6 d?4?
mo963 tecla
goto ciclo
cinco mo9l6 d?-?
mo963 tecla
goto ciclo
seis mo9l6 d?/?
mo963 tecla
goto ciclo
4la3 mo9l6 .?2*22? ;lectura de la 4la 7 0 1
mo963 ptoa
nop
mo93 pto.G6 ;leer las columnas conectadas al puerto @
mo963 4las
.t3ss 4lasG*
goto siete
.t3ss 4lasG2
goto oc,o
.t3ss 4lasG+
goto nue9e
goto 4la4
siete mo9l6 d?7?
mo963 tecla
goto ciclo
oc,o mo9l6 d?0?
mo963 tecla
goto ciclo
nue9e mo9l6 d?1?
mo963 tecla
goto ciclo
4la4 mo9l6 .?*222? ;lectura de la 4la del * * J
mo963 ptoa
nop
mo93 pto.G6 ;leer las columnas conectadas al puerto @
mo963 4las
.t3ss 4lasG2
goto cero
goto 4la2
cero mo9l6 d?*?
mo963 tecla
goto ciclo
end

You might also like