Está en la página 1de 18

Preguntas Propuestas para ETS y EXTRA de Micros

1. En la siguiente tabla se muestran cinco instrucciones que usan WREG o FileReg como
destino. Explicar cada una de ellas y agregar tres ms.
COMF
DECF
DECFSZ
MOVF
SWAPF

FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d

2. En la siguiente tabla se muestran cinco instrucciones con la ALU. Explicar cada una de
ellas y agregar las tres que faltan.
ADDWF
ANDF
DECFSZ
XORWF
SUBFWB

FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d
FileReg, d

3. En la siguiente tabla se muestran cinco instrucciones que se ramifican (branch)


dependiendo del estado de STATUS. Explicar cada una de ellas y aadir tres que
faltan.
BC
BZ
BN
BNOV
BNZ

4. En el diagrama del PIC indicar cinco subsistemas sin nombre y explicar su funcin.

Prof. S. Saucedo

Gua ETS Micros 2016

5.
6.
7.
8.

Explicar, anexando un diagrama, el banco de acceso por omisin.


Explicar la instruccin MOVWF POSTINC1.
Explicar la instruccin TBLRD*+.
Explicar la instruccin BTFSS FileReg, Bit.

Prof. S. Saucedo

Gua ETS Micros 2016

9. Explicar la diferencia entre las instrucciones BRA y GOTO.


10. Explicar la diferencia entre las instrucciones CALL y RCALL.
11. Dar una rutina que use quince veces la instruccin RETLW.
12. Hacer una rutina en assembler que tarde 20.2 milisegundos.
13. Explicar tres modos de direccionamiento, dando tres ejemplos de cada uno.
14. Hacer un programa que permita intercambiar bytes de modo serial a dos PIC18F.

15. Hacer un programa en assembler que exhiba minutos y segundos en cuatro displays
de nodo comn multiplexados.

16. Hacer un programa en assembler que exhiba minutos y segundos en cuatro displays
de ctodo comn multiplexados.

Prof. S. Saucedo

Gua ETS Micros 2016

17. En la siguiente tabla se muestran cinco instrucciones que pueden saltar, o no, la
siguiente instruccin. Explicar su operacin y agregar otras tres similares.
CPFSGT
INCFSZ
CPFSEQ
DECFSNZ
BTFSC

f,a
f,d,a
f,a
f,d,a
f,b,a

18. Calcular el baudrate de la UART para cuatro casos de la siguiente tabla


SYNC = 0 Fosc/4 = 12MHz
BRG16
BRGH
SPBRGH
SPBRG
BAUDRATE
0
0
3
77
0
0
2
51
0
1
1
207
1
0
2
112
1
0
1
160
1
1
4
225
19. Calcular precargas en decimal y en HEX para el timer 3
4,80E+07
1,20E+07 =Fosc/4
precarga
ms
30
21
39
9
PREESCALA
8
4
8
2
En HEX:
precarga = 65,536 - ms*(Fosc/4/prescala/1000)

Prof. S. Saucedo

Gua ETS Micros 2016

24
8

10
2

20. Calcular precargas en HEX para timer 0 en modo de 16 bits. Fosc = 48MHz. Llenar
seis de los huecos.
miliseg
preescala
TMR0H
TMR0L

100,0
32
0x84

140,0 220,0
32
64
0x32
0xEC 0xDE

300,0
64

400,0
128
0x6D

500,0
128
0xE5

700,0
256
0x7F
0xD4

850,0 1200,0
256
256
0x64
0x46

21. Hacer un programa en assembler que enve un carcter introducido mediante un


teclado matricial a un LCD de 2*16 caracteres.

22. En el PWM del CCP2 del PIC18F4550 se intenta tener 60% de duty. Llenar los cinco
huecos de la siguiente tabla. Datos: cuatro en binario y uno en decimal.
Frec. Hz
2,952.76
2,976.19
3,000.00
3,024.19

Prof. S. Saucedo

Prescala
16
16
16
16
16

PR2
11111011
11111001
11110111
11110101

T2CON
00000111
00000111
00000111
00000111

Gua ETS Micros 2016

CCPR2L
10011000
10010111
10010100
10010011

CCP2CON
00111100
00001100
00111100
00101100

23. Para un ciclo de instruccin de 0.08334 s Calcular retardo de siguiente subrutina.


R2
equ
R3
equ
DELAY

AGAIN
AQU

0x17 ; localidades de RAM


0x18
MOVLW
MOVWF
MOVLW
MOVWF
NOP
NOP
DECF
BNZ
DECF
BNZ
RETURN

D200
R2
D180
R3

R3, F
AQU
R2, F
AGAIN

24. Programar el modo Compare del CCP2 para generar una onda rectangular con
periodo de 480s y duty de 200 s.
Configurar el mdulo CCP2 en modo PWM igual que en caso anterior utilizando como
pin de salida RC1 o RB3 en funcin del estado de la directiva:
#pragma config CCP2MX=ON // Seal PWM en RC1
#pragma config CCP2MX=OFF // Seal PWM en RB3

Prof. S. Saucedo

Gua ETS Micros 2016

25. Para seis fuentes de interrupcin llenar los huecos y agregar otras tres.
Interrupcin
TMR0
TMR1
TMR2
TMR3
INT1
RCIF

Bandera(registro)
TMR0IF(INTCON)
TMR1IF (PIR1)
TMR2IF (PIR1)
TMR3IF (
)
INT1IF (PIR1)
RCIF ( PIR1)

Permisivo (registro)
TMR0IE(INTCON)
TMR1IE (PIE1)
TMR3IE (PIE2)
INT1IE (
)
RCIE ( PIE1)

Prioridad(registro)
TMR0IP(INTCON2)
TMR2IP (IPR1)
TMR3IP (IPR2)
INTI1IP (INTCON3)

26. Usar lenguaje C para tomar lecturas de temperatura y salvarlas en la EEPROM del
PIC18F.

27. Asumir que WREG tiene dos BCDs empacados. Escriba un programa que convierta
ambos BCDs empacados a dos nmeros ASCII y los ponga en las localidades 0x11 y
0x10.
28. Asumir que las localidades 0x20 y 0x21 tienen sendos dgitos BCD en formato ASCII.
Escriba un programa que los convierta a dos BCDs empacados en la localidad 0x23.

Prof. S. Saucedo

Gua ETS Micros 2016

29. En las localidades 0x1200 a 0x122F de flash se tienen 48 nmeros de ocho bits, sin
signo. Hacer un programa en C que los clasifique, colocndolos en RAM. Colocar a partir
de la localidad 0x120 los nmeros menores a 0x56; a partir de la localidad 0x160 a los
nmeros mayores a 0xB1 y los restantes ponerlos a partir de la localidad 0x140.
30. En las localidades 0x1240 a 0x126F de flash se tienen 48 nmeros de ocho bits, con
signo. Hacer un programa en C que los clasifique, colocndolos en RAM. Colocar a partir
de la localidad 0x220 los nmeros menores a -86; a partir de la localidad 0x260 a los
nmeros mayores a 86 y los restantes ponerlos a partir de la localidad 0x240.
31. En las localidades 0x1300 a 0x134F de flash se tienen 40 nmeros de 16 bits, sin signo.
Hacer un programa en C que los clasifique, colocndolos en RAM. Colocar a partir de la
localidad 0x320 los nmeros menores a 0x175F; a partir de la localidad 0x380 a los
nmeros mayores a 0x4CB8 y los restantes ponerlos a partir de la localidad 0x340.
32. Usar algoritmo heapsort o algoritmo mergesort en C para ordenar de modo ascendente
catorce nmeros de ocho bits con signo situados en memoria RAM del PIC18F.
33. Usar algoritmo quicksort o algoritmo insertion sort en C para ordenar catorce nmeros
de ocho bits con signo situados en memoria RAM del PIC18F.
34. Usar algoritmo heapsort o algoritmo bubble sort en assembler para ordenar catorce
nmeros de ocho bits sin signo situados en memoria RAM del PIC18F.
35. Analizar lo que hace el siguiente programa.
BCF
MOVLW
MOVWF
AQU MOVLW
MOVWF
MOVLW
MOVWF
BCF
BTG
BSF
AGAIN BTFSS
BRA
BCF
BRA

TRISD, 5
0x08
T0CON
0xFF
TMR0H
0x30
TMR0L
INTCON,TMR0IF
LATD,5
T0CON,TMR0ON
INTCON,TMR0IF
AGAIN
INTCON, TMR0ON
AQUI

; RD5 es una salida


; Timer 0, 16 bits, clk inter, sin prescala
; Carga reg T0CON
; TMR0H = FFH (byte alto)
; TMR0L = 0x30 (byte bajo)
; Limpia bit de interrupcin
; Conmuta a RD5
; Arranca timer 0
; monitorea bandera del timer
; Apaga al timer 0
; Recarga TMR0H y TMR0L

Registro T0CON:

36. Rehacer problema anterior con pre escala de 64 y con el PIN RD3.
37. Se conectan las seis puntas de la sonda lgica a los pines RD5 a RD0 del PIC18F.
Aplicar siete combinaciones con dos pines puestos como entrada y cuatro como

Prof. S. Saucedo

Gua ETS Micros 2016

salida. Cada combinacin debe durar 300 ms. Dos de las salidas deben ser 1 y las
otras dos deben ser 0.

38. Emplear la instruccin de multiplicar para disear un generador de nmeros pseudo


aleatorios de ocho bits, sin signo.
39. Hacer un programa en C (o assembler) que maneje cinco interrupciones: INT0, INT1,
TMR0, TMR1 y RBI; las primeras tres de prioridad alta y las dos ltimas de baja prioridad.
40. En las localidades de flash 0x1230 a 0x1233 se tiene el nmero HEX 0x7DE8CA5B y
en las localidades flash 0x1234 a 0x1237 se tiene el nmero HEX 0xB872C69A. Obtener
la resta del primero del segundo y dejar resultado HEX en RAM a partir de la localidad
0x30.
41. Hacer un programa en assembler para generar nmeros pseudo aleatorios de 32 bits
usando un registro de corrimiento con retro lineal (Linear Feedback Shift Register).

Prof. S. Saucedo

Gua ETS Micros 2016

Ver: http://www.electricdruid.net/index.php?page=techniques.practicalLFSRs
rlf

macro file,dest
rlcf file,dest
endm
rrf
macro file,dest
rrcf file,dest
endm
;*************************************************************************
;Variable definitions
; These variables are only needed if low priority interrupts are used.
; More variables may be needed to store other special function registers
used in the interrupt routines.
SHIFT_REG3 equ 0x20
SHIFT_REG2 equ 0x21
SHIFT_REG1 equ 0x22
SHIFT_REG0 equ 0x23
NEW_REG0
equ 0x25
;The replacement SHIFT_REG0 byte
TEMP_REG3A equ 0x30 ; Exactly what they say on the tin.
TEMP_REG3B equ 0x31
TEMP_REG2A equ 0x32 ; Temporales copias de REGs 2 & 3
TEMP_REG2B equ 0x33
Main:
;

*** main code goes here **


call Cfgptos
;Subrutina para configurar puertos I/O
movlw 0x76
movwf SHIFT_REG3
movlw 0xD6
movwf SHIFT_REG2
movlw 0x16
movwf SHIFT_REG1
movlw 0xD3
movwf SHIFT_REG0

Ciclo
movf PORTB,W
nop
movwf LATA
rcall
NoiseSource
goto Ciclo

42. Hacer un programa para crear un minutero: segundero usando un reloj externo de 1.0
Hz para crear un conteo en el timer 1.

Prof. S. Saucedo

Gua ETS Micros 2016

10

43. Hacer un programa en assembler para generar nmeros pseudo aleatorios de 16 bits.
Usar el mtodo de Lehmer.
44. Hacer un programa para crear un minutero: segundero usando un reloj externo de 1.0
Hz para crear un evento en el pin RB7. Ver diagrama siguiente.

45. Llenar seis de los huecos para la operacin del timer 2. Fosc/4 = 12 MHz.
Fosc/4=
pre_esca
post_esca
PR2
frecuencia
periodo

1,20E+07 1,20E+07 1,20E+07 1,20E+07 1,20E+07 1,20E+07 1,20E+07 1,00E+00 1,20E+07


16
16
16
4
4
4
4
1
14
5
7
13
6
13
15
12
145
163
189
115
103
94
78
4,31E+02 3,29E+02 7,94E+02 9,32E+02
2,78E+03 2,14E-04 6,29E+03
2,32E-03
1,26E-03 1,07E-03 4,46E-04 1,88E-04 3,60E-04
1,59E-04

Prof. S. Saucedo

Gua ETS Micros 2016

11

46. Hacer un programa en assembler para generar nmeros pseudo aleatorios de 24 bits
usando un registro de corrimiento con retro lineal (Linear Feedback Shift Register).
Ver: http://www.electricdruid.net/index.php?page=techniques.practicalLFSRs

47. Hacer un programa para calcular el CRC de la cadena ASCIIZ 123456789


Elegir uno de los estndares: CRC-5/EPC, CRC-5/ITU, CRC-5/USB,
CRC-6/CDMA2000-A, CRC-6/CDMA2000-B, CRC-6/DARC, CRC-7, CRC-7/ROHC,
CRC-8, CRC-8/CDMA2000.
Ver: http://reveng.sourceforge.net/crc-catalogue/1-15.htm
48. Hacer un programa para calcular el CRC de 16 bits de la cadena ASCIIZ 123456789
Elegir uno de los estndares: ARC, CRC-16/AUG-CCITT, CRC-16/BUYPASS,
CRC-16/CCITT-FALSE, CRC-16/DNP, CRC-16/USB, KERMIT, XMODEM.
Ver: http://reveng.sourceforge.net/crc-catalogue/16.htm

Prof. S. Saucedo

Gua ETS Micros 2016

12

Ver: http://www.lammertbies.nl/comm/info/crc-calculation.html

49. Hacer un programa para generar una onda senoidal de 100 Hz, segn el siguiente
diagrama, que usa slo siete bits del puerto D.

50. Hacer un programa que lea el estado de cuatro interruptores y exhibir en un display de
siete segmentos el nmero hexadecimal dado por el estado del DIP switch. Ver la figura
siguiente. Usar una rutina con 16 veces la instruccin RETLW.

Prof. S. Saucedo

Gua ETS Micros 2016

13

51. Hacer un programa para implementar un Reloj en Tiempo Real (RTC). Cablear segn
la figura.

Ver pginas 603 a 627 del libro de Pearson/Prentice Hall:

Prof. S. Saucedo

Gua ETS Micros 2016

14

52. Hacer un programa en C para crear un reloj minutero: segundero que vaya de 00:00 a
39:59 y reinicie, usando retardos por software. Cableado que debe usarse:

53. Escribir el cdigo en C para escribir y leer en una de dos memorias usando la interfaz
serie I2C, segn el diagrama siguiente.

Prof. S. Saucedo

Gua ETS Micros 2016

15

54. Para la tabla de clculos del timer 0 en modo de ocho bits, llenar seis huecos.

prescala
precarga
Hz
ms

timer 0, modo 8 bits


Fosc/4 = 12e6 =
64
128
128
93
136
231
1150,31
1201,92
7500
1,28
0,832
0,1333

prescala
precarga
Hz
ms

64
1194,27
0,83733

128
130

128
191
1442,31

1,34400

1,20E+07 Hz
32
32
213
3232,76
0,30933
0,11467
32

218
4934,21
0,20267

2819,55
0,35467

256
97
294,81

2,176

32
225

256
197
794,49

0,08267

55. Hacer un programa que copie doce localidades de RAM de la 0x30 a la 0x3B en la
memoria EEPROM del PIC.
56. Hacer un programa que copie doce localidades de memoria EEPROM del PIC a doce
localidades de RAM de la 0x40 a la 0x4B.
57. Hacer un programa para controlar 28 LEDs usando el integrado MM5451, segn la
siguiente figura.

Prof. S. Saucedo

Gua ETS Micros 2016

256
154

16

256
384,22
2,60267

58. Hacer un programa para controlar un convertidor de digital a analgico con interfaz SPI
segn la figura siguiente.

59. Asumir un cristal de 20 MHz Crear un programa para generar una onda cuadrada de
60 Hz por el pin PORTD 7. Usar al timer0 con en modo 16 bits, con una pre escala =
64.
60. Asumir que Fosc = 48 MHz. Calcular la frecuencia de la onda cuadrada generada en la
terminal PORTD 0 con el siguiente programaBCF
MOVLW
MOVWF
BCF

TRISD,0
0x48
T0CON
INTCON,TMR0IF

Prof. S. Saucedo

; RD0 es UNA salida


; timer0, 8 bits, sin prescala
; carga registro de control
; limpia bandera de interrupcin
Gua ETS Micros 2016

17

ACA MOVLW 0x7


; TMR0L = 7, el byte bajo
MOVWF TMR0L
; carga byte del timer0
RCALL DELAY
;
BTG
PORTD,0
; conmuta salida
BRA
ACA
; carga regisstro otra vez
;-------------------------- retardo usando el timer 0
DELAY BSF T0CON,TMR0ON
; arranca al timer
AQU BTFSS INTCON,TMR0IF ; coteja bandera del timer hasta que
BRA AQU
; desborde
BCF T0CON,TMR0ON
; detiene al TMR0
BCF INTCON,TMR0IF
; limpia bandera del timer
RETURN
61. La siguiente se exhiben algunos tipos de datos de C para el PIC18F. Completar cuatro
de los huecos.
Tipo de Dato
unsigned char
char
unsigned int
int
unsigned short
unsigned short long
short long

Cantidad de bits
8 bits
8 bits
16 bits
16 bits
24 bits
32 bits

Prof. S. Saucedo

Gua ETS Micros 2016

Rango
0 a 255
-128 a
0 a 65,535
a +32,767
0 a 65,535
-32,768 a +32,767
0a
-8388,608 a
-2,147483,648 a

18

También podría gustarte