Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
4. En el diagrama del PIC indicar cinco subsistemas sin nombre y explicar su funcin.
Prof. S. Saucedo
5.
6.
7.
8.
Prof. S. Saucedo
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
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
Prof. S. Saucedo
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
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
CCPR2L
10011000
10010111
10010100
10010011
CCP2CON
00111100
00001100
00111100
00101100
AGAIN
AQU
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
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
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
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
salida. Cada combinacin debe durar 300 ms. Dos de las salidas deben ser 1 y las
otras dos deben ser 0.
Prof. S. Saucedo
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:
;
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
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
Prof. S. Saucedo
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
Prof. S. Saucedo
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
13
51. Hacer un programa para implementar un Reloj en Tiempo Real (RTC). Cablear segn
la figura.
Prof. S. Saucedo
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
15
54. Para la tabla de clculos del timer 0 en modo de ocho bits, llenar seis huecos.
prescala
precarga
Hz
ms
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
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
17
Cantidad de bits
8 bits
8 bits
16 bits
16 bits
24 bits
32 bits
Prof. S. Saucedo
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