gxanren de lnformática rQU

Anuncio
gxanren de lnformática
Nombre:
Grupo:
Cedula de ldentidad N":
de examen: Libre ¡ Reglgrngllqle
4"año C.l.T
ElectrotecniaElectrónica
!
Ejercicio 1.
MPLAB para poder escribir en
Explique cómo se tiene que usar el software
et áo¡ior el programa en lenquaie assembler'
Ejercicio 2.
que el programa funciona
En el software MpLAB, ¿cómo se puede verificar
bien? Dé un ejemplo con el siguiente programa:
RESULTADO
]N]CIO
6F69
LIST
P1
rQU
0x020
ORG
GOTO
0x0000
MOVLTü
ox8 1
0x8 3
ADDLI/ü
MO\/WF
END
0
INICfO
RESULTADO
Ejercicio 3.
el registro de
Desarrolle la subrutina que convierte el número cargado en
"febrero, considerando:
trabajo (W) su letra correspondiente a la palabra
o RCO ) segmento E
. RC1 ) segmento D
¡ RC2 ) segmento C
o RC3 ) segmento B
o RC4 ) segmento A
o RC5 ) segmento F
o RCG ) segmento G
o RC7 permanece como 0.
Ejercicio 4.
inicialmente valen cero los registros w y los que ocupan
las direcciones 0x23 y Ot24 de la memoria de datos, ¿Qué valor contendrán
después de ejecutar el siguiente programa?
si se supone que
INCF
INCF
COMF
IORlIE
XORWF
0x2 3, 0
0x24,L
0x2 3, 1
0x23,0
0x24,7
Página 1 de
1
,
Período
Febrero 2010
ElectrotecniaElectrónica
4"año
C.I.T
Examen de lnformática
Ejercicio
Nota:
Nombre:
Grupo:
Cedula de ldentidad N":
Tipo de examen: Librel-l
Resolución del Examen
CETP - ITS
Reglamentadol-l
- Teórico.
1.
Explique cómo se tiene que usar el software MPLAB para poder escribir en el editor
el programa en lenouaie assembler.
Solución:
Primero hay que crear un proyecto nuevo siguiendo los pasos correspondientes
(Proiect>New o el botón New Project de la barra de herramientas Project Manager)
o abrir un proyecto existente (Praiect>Open). Luego, hay que crear un archivo nuevo
(File>New o el botón New File de la barra de heramientas Standard). Aparecerá
una ventana titulada Untitled donde se podrá empezar a escribir el programa en
código assembler. Antes, durante o después de escribir el código, se puede guardar
el archivo del código con extensión . asm, la extensión de los archivos código fuente
assembler (es la extensión dada por defecto en la ventana Save As). Cuando el
archivo se guarda, el nombre de la ventana cambia al camino del archivo y los
diferentes campos del código (números hexadecimales, etiquetas, comentarios, etc.)
toman el formato programado en la configuración del editor (Edit>Properties...,
pestaña Text).
-+-
Ejercicio 2.
En el software MPLAB, ¿cómo se puede verificar que el programa funciona bien? Dé
un ejemplo con el siguiente programa:
LI
RESULTADO
TNICIO
ST
P=16F690
EQU
0x02
ORG
GOTO
INICIO
MOVLT{
0x81
0
0x0000
ADDLI^7
0xB3
MO\/[fF
RESULTADO
END
Solución:
Primero se debe elegir el depurador. Elegimos "MPLAB SIM" como depurador del
programa (Debuqaer>Select Tools>MPLAB SIW y luego depuramos el programa
(Proiect>Build All, <Ctrl> + <F10> o el botón Build All de la barra de herramientas
Project Manager). Elegimos la ventana Watch (View>Watch), donde elegiremos las
variables a observar (En este caso serán RESULTADo, sTATUS y wREG (registro de
Página 1 de 8
,
Período
Febrero 2010
ElectrotecniaElectrónica
Examen de Informática
i
Nombre:
Grupo:
Cedula de ldentidad No:
Tipo de examen: Librel--l
4oaño
c.l.T
CETP.ITS
Nota:
Reglamentadon
trabajo)). Debido a la velocidad y duración del programa del ejemplo, corremos el
programa como animación paso a paso (Debuoger>Animate o el botón Animate de
la barra de herramientas Debug) o por pasos individuales (Debuqqer>Step lnto,
<FT> o el botón Step lnto de la barra de herramientas Debug). Cuando se depura
se tiene que observar la siguiente secuencia de hechos:
RESULTADO ü]REG
PROGRAMA
IN]C]O
GOTO
MOVLW
ADDLVü
MOWF
]NICIO
OXB1
OXB3
RESULTADO
END
STATUS
B'00000000' B'00000000' B'00011000'
B'00000000' B'00000000' B'00011000'
B'00000000' B'1.000000i' B'00011000'
B'00000000' B'4i0000i0ü' B'0001100-L'
B,00000i00, B'00000100' B'00011001'
En rojo, están marcados los bits Al sumarse el numero 0xB 1 (ya almacenado en
wREG) y el número oxa3 (proveniente del literal) en wREG, el bit c (bit de acarreo,
localizado en srATUS,l (el 1o de derecha a izquierda)) se pone a'1'debido a que el
resultado de la suma en vüREG (0x104) sobre pasa los 8 bits, por lo que el 90 bit se
pasa al acarreo. Sin el 90 bit, el resultado almacenado en wREG (0x04) se pasa al
RESULTADO.
-+-
Ejercicio 3.
Desarrolle la subrutina que convierte el número cargado en el registro de trabajo (W)
su letra correspondiente a la palabra "febrero", considerando:
.
.
o
o
.
.
.
.
)
RC1 )
RC2 )
RC3 )
RC4 )
RC5 )
RC6 )
segmento E
segmento D
segmento C
segmento B
segmento A
segmento F
segmento G
RC7 permanece como 0.
RCO
;4--
illl ^->.
/'l/"j
-o-x
[l-lJ
ittt
Ya
(J
'l --D X
IJ
Solución:
Tenga en cuenta cómo se va a implementar el mecanismo: a la subrutina entrará el
valor "x" de la posición de la letra en la palabra mediante wREG. Este valor "x" se
sumará al valor de pcr, (contador de programa), lo que provocará que el programa
saltee "x" instrucciones dentro de la subrutina. Luego, la subrutina devolverá el valor
la configuración del display de 7 segmentos. Aclarado esto, empecemos con la
subrutina.
Página 2 de 8
Período
Febrero 2010
ElectrotecniaElectrónica
4"año
c.r.T
Examen de lnformática
Nombre:
Grupo:
Cedula de ldentidad N":
Tipo de examen: LibreE
CETP - ITS
Nota:
Reglamentadon
Primero, el cabezal de la subrutina. Llamaremos TABLA a la subrutina, por lo que la
primera línea empezará con esta etiqueta. Luego se debe insertar la operación de
suma entre pcl, y wREG. La instrucción es ADDWE f , d, donde f es el valor del
registro fuente (rcl) y d indica a dónde se cargará el resultado (r, para que se
cargue en pcr, y realice el salto). Entonces quedaría así:
TABLA
PCL, F
ADDWF
Ahora, empezamos con la tabla. Considere primero cómo se verán las letras de la
palabra en el display, y luego haga la tabla correspondiente. Para nuestro ejemplo,
las letras que usaremos ('F', 'E', 'B', 'R' y'O') se verán de la siguiente forma:
Letra'F'
Letra'E'
Letra'B'
Letra'R'
Letra'O'
ffi
Luego que tenga el esquema de empiece a diseñar la tabla con los segmentos
según el orden que poseen. Luego se cambian de lugar para ajustarse a la
configuración que se da en el problema (Sigan el resaltado de las letras para ver los
cambios y el fondo para ver a qué configuración pertenecen):
Segr,nentos
F
E
B
R
o
Una vez arreglado ese asunto, debe pensar como cargar el valor de la tabla en wREG
y al mismo tiempo volver al procedimiento anterior. Hay una instrucción de retorno
diseñada para estos casos. Es Rntr,w r, donde t representa un literal que se
cargará en wREG antes de que se salga de la subrutina. En nuestro caso el literal
será el valor que se deba cargar en poRTC y que acabamos de calcular. Según la
Ietra, RC7 permanecerá como'0'. Si se van a mostrar en hexadecimal, esto significa
que los literales no van a ser mayores que 0x7r. Luego de arreglado este asunto se
pueden armar las tablas. Así se verá la tabla en ambas versiones (binaria y
hexadecimal):
Página 3 de 8
." Período
Febrero 2010
ElectrotecniaElectrónica
4"año
c.t.T
Nombre:
Grupo:
Gedula de ldentidad N":
Tipo de examen: Libre[--l
LETRA RUTINA (BIN)
F
E
B
R
E
R
O
\-
CETP.ITS
Examen de lnformática
RETLW
RETLW
RETLW
RETLVü
RETLW
RETLW
RETLW
Nota:
Reglamentadon
RUTINA (HEX)
B'O111OOO1' RETLW
8'01110011' RETLW
8'01100111' RETLW
B' O1OOOOO1' RETLVü
8'0111001-1' RETLW
B'O1OOOOO1' RETLW
B' O1OOO111' RETLW
OX71
OX73
OX67
OX41
OX73
OX41
OX47
Al final, se pondrá un simple RETURN por si accidentalmente el número'7' pasa a la
tabla. Si esto ocurre, el número'7' se conservará en wnrc y se cargara en poRTC
como la configuración del display, por lo que se mostrará una "u" minúscula en el
display cuando se salga de la subrutina que indicará que el filtrado está fallando.
Dado esto, se ahora si podemos dar la subiutina completa en sus dos versiones, con
tabla binaria (BlN) y hexadecimal (HEX). Según la opción que quiera, así es como
deberá verse la subrutina terminada:
(BtN)
TABLA
ADDWF
RETLVü
RETLVü
RETLW
RETLVü
RETLW
RETLW
RETLW
PCL, F
B'O111OOO1'
B' 01110011'
B'01100111'
B' O].OOOOO1'
B' 01110011'
B'O1OOOOO1'
B'01000111'
RETURN
(HEx)
TABLA
ADDWF
RETLW
RETLVü
RETLW
RETLW
RETLW
RETLVü
RETLVü
RETURN
Página 4 de 8
PCL,
OX71
OX7 3
OX67
OX41
OX73
OX41
OX41
E
.
Período
Febrero 2010
ElectrotecniaElectrónica
CETP. lTS
Examen de lnformática
Nombre:
Grupo:
Cedula de ldentidad N":
Tipo de examen: LibreE
4oaño
c.t.T
Nota:
Reglamentadof--l
Ejercicio 4.
Si se supone que inicialmente valen cero los registros W y los que ocupan las
direcciones 0x20 y Ox21 de la memoria de datos, ¿Qué valor contendrán después de
ejecutar el siguiente programa?
INCF
INCE
coME
ORVüF
xoRI{F
f
0X02 0,
i¡I
0X020,
E
0x021,
E
0X021,I/ü
0X020f F
Solución:
Bien, lo primero revisar las líneas de programa una por una para ver qué sucede.
Se incrementa oxo2 0 (0x00
0x01) y se carga en WREG, sin afectar a
.
.
.
.
.
)
0x2 0.
Se incrementa 0x021 (0x00
0x01) y se carga en el propio registro sin
afectar a wREG.
Se invierte el valor de oxozl (0x00
oxrr) y se carga en el propio registro.
Se suman lógicamente (ron) wREG y oxo21 (0x01 + oxFF
oxrr) y se
carga el valor en htREG, sin afectar a 0x021
)
)
)
Se hace un xon entre wREG y ox02 o (oxEE
0x21 sin afectar a wREG.
o
0x01
)
oxFE) y se carga en
Ahora revisemos esto en frio:
INCF
rNCE
coMF
roRütF
XORITTF
0x2\
0x2 0
I^IREG
PROGRAMA
B]N
HEX
BIN
HEX
BTN
HEX
0X2 0,I¡I
0X20, F
0x21, F
B' 00000000'
0x0 0
B,0000000i,
B'00000001,
0x0 0
0x0 0
0x21,
0X2 0,
B¡ 00000001,
B'00000000,
B,00000000,
B'00000000,
B' .i.1i i:Lil-"1_,
B'11111111'
B',11111111'
0x00
0x0
B,00000000,
B',00000000,
B'0000000i..
B',00000001,
B' 00000001,
B¡ i-i-"Lr1i1ü'
END
tr\7
F
B'r1, l.ji 111'
B'11111111/
i
0x0l_
0x01
NY;'Ii
OXFF
0x01
0x01
0x01
OXF]E
0x0
0xL,'P'
OXFE
.OXFF
La última fila contiene los resultados finales de los registros 0x020, 0x021 y wREG,
los cuales solo se ven cuando se llega alfinal del programa.
Página 5 de 8
0
0x0 0
, Período
Febrero 2O1O
ElectrotecniaElectrónica
4"año
c.r.T
CETP . ITS
Examen de lnformática
Nombre:
Grupo:
Cedula de ldentidad N":
Tipo de examen: Libre E
Nota:
Reqlamentado
fI
PROBLEMA 1: parte del PROGRAMA PRINCIPAL:
NEWCONT
CLRF
CLRF
UNIDAD
DECENA
BUCLE
DESPLE
VER DESB UNI
CALL
INCF
MOVLW
INC_DEC
SUBWF
BTFSS
GOTO
CLRF
MOVLW
VER_X-LINI
UNIDAD
DECENAsl
BLiCi,E
D'X'
SUBWF
BTFSS
GOTO
LINIDAD,O
STATUS,2
BUCLE
MOVLW
D'Y'
SUBWF
BTFSS
GOTO
DECENA5o
STATUS,2
INCF
GOT'O
VER-X_I.INI
VER Y DEC
CALL
GOTO
\
IINIDAD,I
D'10'
UNIDAD,O
STATUS,2
NOTA: La línea en roio impide que
por lo que debe borrarse.
BUCLE
DESPLE
NEWCONT
se revise el
límite si el número
es
múltiplo de 10,
Descargar