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 más.
COMF FileReg, d
DECF FileReg, d
DECFSZ FileReg, d
MOVF FileReg, d
SWAPF 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 FileReg, d
ANDF FileReg, d
DECFSZ FileReg, d
XORWF FileReg, d
SUBFWB FileReg, d
FileReg, d
FileReg, d
FileReg, d
BC
BZ
BN
BNOV
BNZ
4. En el diagrama del PIC indicar cinco subsistemas sin nombre y explicar su función.
15. Hacer un programa en assembler que exhiba minutos y segundos en cuatro displays
de ánodo común multiplexados.
16. Hacer un programa en assembler que exhiba minutos y segundos en cuatro displays
de cátodo común multiplexados.
CPFSGT f,a
INCFSZ f,d,a
CPFSEQ f,a
DECFSNZ f,d,a
BTFSC f,b,a
miliseg 100,0 140,0 220,0 300,0 400,0 500,0 700,0 850,0 1200,0
preescala 32 32 64 64 128 128 256 256 256
TMR0H 0x32 0x6D 0x7F 0x64
TMR0L 0x84 0xEC 0xDE 0xE5 0xD4 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.
24. Programar el modo Compare del CCP2 para generar una onda rectangular con
periodo de 480µs y duty de 200 µs.
Configurar el módulo CCP2 en modo PWM igual que en caso anterior utilizando como
pin de salida RC1 o RB3 en función del estado de la directiva:
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 números ASCII y los ponga en las localidades 0x11 y
0x10.
28. Asumir que las localidades 0x20 y 0x21 tienen sendos dígitos BCD en formato ASCII.
Escriba un programa que los convierta a dos BCDs empacados en la localidad 0x23.
30. En las localidades 0x1240 a 0x126F de flash se tienen 48 números de ocho bits, con
signo. Hacer un programa en C que los clasifique, colocándolos en RAM. Colocar a partir
de la localidad 0x220 los números menores a -86; a partir de la localidad 0x260 a los
números 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 números de 16 bits, sin signo.
Hacer un programa en C que los clasifique, colocándolos en RAM. Colocar a partir de la
localidad 0x320 los números menores a 0x175F; a partir de la localidad 0x380 a los
números 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 números de ocho bits con signo situados en memoria RAM del PIC18F.
33. Usar algoritmo quicksort o algoritmo insertion sort en C para ordenar catorce números
de ocho bits con signo situados en memoria RAM del PIC18F.
34. Usar algoritmo heapsort o algoritmo bubble sort en assembler para ordenar catorce
números de ocho bits sin signo situados en memoria RAM del PIC18F.
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 lógica a los pines RD5 a RD0 del PIC18F.
Aplicar siete combinaciones con dos pines puestos como entrada y cuatro como
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 número HEX 0x7DE8CA5B y
en las localidades flash 0x1234 a 0x1237 se tiene el número 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 números pseudo aleatorios de 32 bits
usando un registro de corrimiento con retro lineal (Linear Feedback Shift Register).
Main:
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.
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 operación del timer 2. Fosc/4 = 12 MHz.
Fosc/4= 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
pre_esca 16 16 16 4 4 4 4 1
post_esca 14 5 7 13 6 13 15 12
PR2 145 163 189 115 103 94 78
frecuencia 4,31E+02 3,29E+02 7,94E+02 9,32E+02 2,78E+03 2,14E-04 6,29E+03
periodo 2,32E-03 1,26E-03 1,07E-03 4,46E-04 1,88E-04 3,60E-04 1,59E-04
Ver: http://www.electricdruid.net/index.php?page=techniques.practicalLFSRs
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 estándares: 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
49. Hacer un programa para generar una onda senoidal de 100 Hz, según el siguiente
diagrama, que usa sólo 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 número hexadecimal dado por el estado del DIP switch. Ver la figura
siguiente. Usar una rutina con 16 veces la instrucción RETLW.
53. Escribir el código en C para escribir y leer en una de dos memorias usando la interfaz
serie I2C, según el diagrama siguiente.
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, según la
siguiente figura.
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 programa-
61. La siguiente se exhiben algunos tipos de datos de C para el PIC18F. Completar cuatro
de los huecos.