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,