Академический Документы
Профессиональный Документы
Культура Документы
RoHS
J14
J15 J10
J11
J13
J5 J7
+ J8
J9
electronics devices J1
+
J2
J3 J4
GUIA DIDÁCTICA DE
APRENDIZAJE
2
PREFACIO
3
4
ELECTRÓNICA DE LA PLACA
5
• 1 Oscilador secundario a cristal de 32.768 KHz.
• 1 Regulador de 5V 7805
• 1 Jack DC de entrada de 12 V fuente conmutada
PLATAFORMA DE DESARROLLO
6
adecuado CCS, HIGHTECH, C18, C24, DsPIC entre otros
para el lenguaje C. Para programar en forma gráfica
(diagrama de flujo) es necesario instalar la plataforma
adecuada NIPPLE, FLOWCode, etc.
PROGRAMADOR
7
CONSTRUCCIONES CONGNITIVAS PREVIAS
• Electrónica Básica.
• Algebra de BOOL.
• Técnicas Digitales.
• Operación de PC.
• Inglés técnico
RECOMENDACIONES GENERALES
8
buen método que reduce la tasa de fracasos y acelera el
aprendizaje.
9
desarrollo de sistemas de control con microprocesadores
ya que hasta esa época resultaba bastante complicado y
tedioso además de voluminoso la implementación de
estos sistemas. Solo por recordar los más populares de la
época: MC 6800(MOTOROLA), Z80 (ZILOG), 8080 (INTEL),
6502 (ROCKWELL).
10
En la actualidad existen microcontroladores con
la arquitectura mejorada para lenguaje C, núcleos de 32
bit, frecuencias de reloj de 200Mhz, procesamiento
digital de señales DSP, periféricos USB, CAN, TCP/IP y el
avance no se detiene.
REPASANDO CONCEPTOS
11
Sin lugar a dudas, corregir el Hardware es más
costoso que corregir el Software, pero cualquiera de ellos
debe tener en cuenta al otro. Ambos en conjunto
determinan la solución de una aplicación en particular.
12
El bloque denominado DECODIFICADOR DE
INSTRUCCIONES tiene por finalidad interpretar las
instrucciones dadas en un programa.
13
SISTEMAS DE NUMERACIÓN
Donde:
14
Las variables a, b, c son los elementos numéricos, la base
de la potencia es diez (decimal) y el exponente de dichas
bases la posición que ocupa un elemento en particular.
100 10 1
600 50 3
15
que sepa el porqué y la utilidad de tales ejercicios. Para el
ejemplo anterior podríamos decir que está compuesto
por 6 (seis) centenas, 5 (cinco) decenas y 3 (tres)
unidades.
NUMERACION OCTAL
16
El número escrito en base octal, 172 por ejemplo, tiene
su equivalente en decimal y se obtiene aplicando la
resolución del polinomio que lo representa.
8 8 8
64 8 1
64 56 2
(En decimal)
NUMERACION HEXADECIMAL
17
resolución del polinomio que lo representa, igual que en
los casos anteriormente descriptos.
256 16 1 1
256 176 12
(En decimal)
NUMERACION BINARIA
2 2 2
4 2 1
18
4 0 1
(En decimal)
.653
En binario
B’10011101’
En Hexadecimal
H’1F3A’ o 0x1F3A
19
LA LÓGICA, BREVE RESEÑA HISTORICA
20
COMPUERTAS ELECTRÓNICAS DIGITALES
variable a
PROCESO
variable R
variable b
21
cantidad de combinaciones es representada por una
potencia en base dos cuyo exponente es la cantidad de
variables de entrada del sistema.
c b a R
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Tabla 1-Combinaciones posibles de tres variables.
22
Convengamos que una llave abierta representa
un “cero lógico” y cerrada un “uno lógico”. El led
apagado equivale a cero y encendido a uno.
COMPUERTA AND
23
combinar el estado de las variables de entrada A y B, se
construye una tabla verdad.
A B Q
0 0 0
0 1 0
1 0 0
1 1 1
Tabla 2-Tabla de respuesta de la compuerta AND.
COMPUERTA OR
24
Fig.3-Circuito de compuerta OR.
A B Q
0 0 0
0 1 1
1 0 1
1 1 1
Tabla 3-Tabla de respuesta de la compuerta OR.
25
Observe que en cada fila el resultado obtenido es
una suma entre las variables A y B. Por lo que a esta
función se la denomina también “sumador lógico”.
26
A Q
0 1
1 0
Tabla 4-Tabla de respuesta de la función NOT.
27
Fig.5-Circuito función YES.
A Q
0 0
1 1
Tabla 5-Tabla de respuesta de la función YES.
COMPUERTA NAND
28
El circuito eléctrico que representa a este nuevo
operador lógico está conformado de la siguiente forma:
A B Q
0 0 1
0 1 1
1 0 1
1 1 0
Tabla 6-Tabla de respuesta de la compuerta NAND.
29
COMPUERTA NOR
A B Q
0 0 1
0 1 0
1 0 0
1 1 0
Tabla 7-Tabla de respuesta de la compuerta NOR.
30
COMPUERTA XOR (OR Exclusiva)
A B Q
0 0 0
0 1 1
1 0 1
1 1 0
Tabla 8-Tabla de respuesta de la compuerta XOR.
31
Fig.8-Circuito de compuerta XOR.
32
Fig.9-Circuito de compuerta XNOR.
A B Q
0 0 1
0 1 0
1 0 0
1 1 1
Tabla 9-Tabla de respuesta de la compuerta XNOR.
33
El vocablo inglés BIT es el acrónimo de “Basic
Information uniT” o “Binary digIT” y hace referencia a la
unidad de información mínima que forma un sistema
digital. Se lo representa como una casilla donde puede
contener un “1” o un “0”. También es una cifra o dígito
binario. Una variable binaria es un BIT.
B7 B6 B5 B4 B3 B2 B1 B0
1 0 1 1 0 1 0 1
MSB LSB
34
El peso binario de cada bit es determinado por su
posición. Observe en la tabla siguiente que el peso
binario en decimal de cada BIT es el resultado de la
potencia de base 2 elevado por el exponente de la
posición y que el valor decimal de ese peso es siempre el
doble del anterior o la mitad del posterior.
2% 2& 2' 2( 2) 2 2 2
128 64 32 16 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 0 1 1 0 1 0 1
1+4+16+32+128=181
35
Es decir que la combinación binaria 10110101
equivale a 181 en decimal.
128 64 32 16 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1
193-128=65
128 64 32 16 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 1
65-64=1
128 64 32 16 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 1 1
1-1=0 Fin de la conversión
36
128 64 32 16 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 1 0 0 0 0 0 1
Y completamos las casillas no utilizadas con cero.
Decimos entonces que el decimal 193 es el binario
11000001.
8 4 2 1 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 1 0 0 0 0 0 1
Observe también que el peso otorgado a los BIT
B4 a B7 son los mismos que los de B0 a B3, esto sucede
37
porque se considera a cada NIBBLE en forma
independiente al BYTE completo y cada uno de ellos es
un dígito distinto hexadecimal.
8 4 2 1 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 1 0 0 0 0 0 1
Comenzamos por el NIBBLE de menor peso,
representado por los BITS B0 a B3 (sector griseado de la
tabla). Para este ejemplo la única casilla que suma es la
que equivale a peso 1, por contener un 1 en su interior
(B0), mientras que B1, B2 y B3 están en cero por lo que
no suman valor alguno. Ya tenemos el primer dígito
hexadecimal y vale 1.
193 = 11000001 = C1
38
CONVERSIÓN HEXADECIMAL a BINARIO
Ejemplos:
E 7
8 4 2 1 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 1 1 0 0 1 1 1
8 D
8 4 2 1 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 0 0 0 1 1 0 1
9 A
8 4 2 1 8 4 2 1
B7 B6 B5 B4 B3 B2 B1 B0
1 0 0 1 1 0 1 0
39
CODIFICADO DE INFORMACION
40
CÓDIGO BCD
Nº B3 B2 B1 B0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
CÓDIGO ASCII
41
control para impresoras, módems, teletipos, etc. del 32
al 126 son espacio, letras mayúsculas, letras minúsculas,
números, signos de puntuación, etc. El 127 corresponde
a DELETE. Del 128 hasta el 255 son considerados
caracteres especiales para otros idiomas y gráficos. El
estándar solo contempla hasta el 127, aunque el 164 “ñ”
o 165 “Ñ” son internacionalmente aceptados en esa
posición decimal.
42
SET DE CARACTERES ASCII EN HEXADECIMAL
43
Veamos algunos caracteres o especiales o
códigos de control.
44
MICROCONTROLADOR PIC 16F628A
El núcleo de la placa de entrenamiento PIC
DISCOVERY es un microcontrolador PIC 16F628A. Muy
versátil y económico para realizar aplicaciones robustas.
En esta sección describiremos brevemente sus
capacidades. Le recomendamos leer la hoja de datos del
fabricante. Allí encontrará detalles importantes, en el CD
encontrará una copia de ella.
PINOUT
45
La alimentación debe ser de 5 VDC. Regulada. El
negativo o chasis se debe conectar al PIN VSS (5),
mientras que el positivo al PIN VDD (14). El regulador
puede ser un 7805 o un 78L05 dependiendo de la
corriente total que deba administrar.
46
Estas resistencias existirán en cada pin que además haya
sido configurado como entrada.
47
La figura 10 nos muestra como se acciona un led
sacando un “1” sobre RB1 o sacando un “0” sobre RB2,
mientras que como RB4 es OPEN DRAIN podremos
encender el led sacando solo un “0”.
48
CARACTERÍSTICAS ESPECIALES DEL MCU
49
CARACTERÍSTICAS DE PERIFÉRICOS
50
ARQUITECTURA INTERNA
51
MEMORIAS
52
veremos en detalle posteriormente, esta ocupa 6 de los
14 BITS de una posición. El destino del resultado tiene
dos posibilidades o el registro de trabajo W o un registro
de RAM, ambos son de un ancho de 8 BITS, por lo que
con un solo bit es posible decidir donde depositaremos el
resultado. Los 7 BITS restantes son la posición que ocupa
un registro de memoria RAM.
Por ejemplo:
M 0x01FF L
13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 0 0 1 1 1 0 0 1 0 0 0 0 0
addwf W 0x20
53
MEMORIA RAM (REGISTROS GENERALES)
54
cuales pines serán entradas, cuales salidas o si vamos a
utilizar o no los comparadores analógicos, administrar
interrupciones, temporizadores, etc. por lo que no
pueden ser utilizados para almacenar otro tipo de
información ya que alteraría la forma en que se
desempeña el MCU.
Dirección Dirección
Banco RP1 RP0
INICIAL FINAL
BANK 0 0 0 0x00 0x7F
BANK 1 0 1 0x80 0xFF
BANK 2 1 0 0x100 0x17F
BANK 3 1 1 0x180 0x1FF
55
Tenemos a disposición para armar variables un
total de 224 BYTES, es decir los 96 BYTES del BANK 0, los
80 BYTES del BANK 1 y los 48 del BANK 2. Observe la
tabla y advierta que los bancos 1,2 y 3 tienen 16 BYTES
cada uno con un asterisco y griseados, se trata de la
repetición de los últimos 16 BYTES del banco 0 en los
otros bancos por lo que no son otros distintos de estos.
REGISTRO DE TRABAJO W
REGISTRO STATUS
56
acarreo entre el NIBBLE BAJO y el ALTO BIT-1 “DC” (DIGIT
CARRY). En combinación, es posible determinar si un
número es mayor, menor o igual a otro, por ejemplo,
aplicando una resta entre ambos y leyendo el estado de
dichas banderas para realizar el salto si tal o cual
condición se producen.
57
MODOS DE DIRECCIONAMIENTO
DIRECCIONAMIENTO INMEDIATO
addlw 0xC2
0 0 0 0 1 0 0 0
W después de la instrucción=0XCA
1 1 0 0 1 0 0 1
58
DIRECCIONAMIENTO DIRECTO
movwf 0x21
W antes de la instrucción=0x08
0 0 0 0 1 0 0 0
1 0 0 1 0 1 1 1
W después de la instrucción=0x08
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
59
DIRECCIONAMIENTO INDIRECTO
60
Lo primero que se debe realizar es posicionarse
en el banco correspondiente cargando los BITS 5,6 y 7 del
STATUS con “0” para este ejemplo.
PRIMERO 0x3E 1 1 1 1 1 1 1 1 FF
SEGUNDO 0x3F 0 0 0 1 1 1 1 1 1F
PRIMERO 0x3E 1 1 1 1 1 1 1 1 FF
SEGUNDO 0x3F 0 0 0 1 1 1 1 1 1F
61
DIRECCIONAMIENTO RELATIVO
62
Las subrutinas son invocadas con la instrucción
call XXXX siendo XXXX la dirección hexadecimal donde se
ubica la subrutina, la última instrucción en ella debe ser
siempre return.
El proceso es el siguiente:
63
PCL Instrucciones
0x200 Instrucción 1
0x201 Instruccion2
0x202 Call 0x300
0x203 Instrucción 4
0x204 Instrucción 5
. .
. .
. .
. .
. .
. .
0x300 Instrucción n
Instrucción n+1
Instrucción n+2
return
VECTOR DE RESET
64
VECTOR DE INTERRUPCIÓN
FUENTES DE INTERRUPCIONES
65
• Fin de transmisión de datos por USART.
• Dato recibido por USART.
• CCP –Módulo de Captura/Comparación.
• Desborde de TMR1.
• Igualado de TMR2.
• Escritura de EEPROM.
66
REGISTRO INTCON (INTERRUPT CONTROL)
67
1 = desborde de TMR0 (borrar en programa).
0= No ha ocurrido desborde.
68
1 = Habilita interrupción Recepción USART.
0= Deshabilita interrupción Recepción USART.
Bit-3 No Utilizado
69
Bit-7 EEIF (EE Write Complete Interrupt Flag)
Bit-3 No Utilizado
Modo Captura
1 = Captura ocurrida TMR1 (Borrar en programa).
0= No ha ocurrido captura TMR1.
Modo Compara
1 = Igualdad de TMR1 (Borrar en programa).
0= No ha ocurrido igualdad TMR1.
70
Bit-1 TMR2IF (TMR2 to PR2 Match Interrupt Flag)
71
El acceso a los puertos, tanto para leer un pin de
entrada o sacar un valor por un pin de salida se realiza
leyendo o escribiendo sobre los registros denominados
PORTA y PORTB que se hallan localizados en el BLOCK-0
del banco de registros (banco principal).
EJEMPLO:
72
Existe otro registro, denominado OPTION,
dicado a la manera en que queremos que se comporte el
MCU. Cada bit dentro del cumple una función de control
que se muestra a continuación.
73
1 = Asignado al WDT (perrito guardián).
0 = Asignado al módulo temporizador TMR0.
CONFIGURACIÓN DE BASE
74
única forma de acceso admisible es la escritura/lectura
mediante el programador (ver página 96 de la hoja de
datos).
USER ID
MÓDULOS PERIFERICOS
75
Transmisor/Receptor Asincrónico/Sincrónico Serie
USART y EEPROM de Datos serán analizados en cada
práctica particular diseñada para tal fin.
SUMARIO DE INSTRUCCIONES
Operando,
NEMÓNICO DESCRIPCIÓN
destino
addwf f,d Suma W y f
andwf f,d AND W con f
clrf f Borra f
clrw --- Borra w
comf f,d Complementa f
decf f,d Decremento de f
decfsz f,d Decremento de f, salto si cero
incf f,d Incremento de f
incfsz f,d Incremento de f, salto si cero
iorwf f,d OR inclusiva W con f
movf f,d Mueve f
movwf f Mueve W a f
nop --- No opera
rlf f,d Rota a la izquierda desde CARRY
rrf f,d Rota a la derecha desde CARRY
subwf f,d Substrae W a f
swapf f,d Intercambio de NIBBLES en f
76
xorwf f,d OR exclusiva W con f
Para las instrucciones orientadas al BYTE, el
operando f es la dirección de un registro de RAM y es de
7 BITS. Por lo tanto f es un número hexadecimal
comprendido entre 0x00 y 0x7F. El operando d es el
destino del resultado, es de 1 BIT. Los destinos posibles
son dos, el registro de trabajo W o el registro f. Si el bit d
es 1 el resultado se escribe en el registro RAM, si es cero
en el registro de trabajo W.
M addwf 0x7F,F L
13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 0 0 1 1 1 1 1 1 1 1 1 1 1
Código instrucción d Registro RAM
Operando,
NEMÓNICO DESCRIPCIÓN
BIT
bcf f,b Pone a cero el bit b del registro f
bsf f,b Pone a uno el bit b del registro f
btfsc f,b Prueba estado bit b, salta si cero
btfss f,b Prueba estado bit b, salta si uno
77
El formato de este tipo de instrucciones es:
M bcf 0x2A,F L
13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 1 0 0 1 0 1 0 1 0 1 0 1 0
Instrucción Bit Registro RAM
Literal
NEMÓNICO DESCRIPCIÓN
inmediato
addlf k Suma literal y W
andlf k AND literal con W
call k Llamada a subrutina
clrwdt --- Borra temporizador WDT
goto k Ir a una dirección
iorlw k OR inclusiva literal con W
movlw k Mueve literal a W
retfie --- Retorno desde interrupción
retlw k Retorno subrutina con literal en W
return --- Retorno subrutina
sleep --- Entra en modo dormir
sublw k Substrae W al literal
xorlw k OR exclusiva literal con W
M andlw 0x73 L
13 12 11 10 09 08 07 06 05 04 03 02 01 00
1 1 1 0 0 1 0 1 1 1 0 0 1 1
Instrucción Literal inmediato
78
El número literal es un número de 8 bits cuyo
valor hexadecimal está comprendida entre 0x00 a 0xFF.
M goto 0x0183 L
13 12 11 10 09 08 07 06 05 04 03 02 01 00
1 0 1 0 0 1 1 0 0 0 0 0 1 1
Código Literal inmediato (dirección destino)
79
80
SUMARIO DE TEMAS
Prefacio 3
Electrónica de la placa 5
Plataforma de desarrollo 6
Programador 7
Construcciones cognitivas previas 8
Recomendaciones generales 8
La era del microcontrolador 9
Repasando conceptos 11
Sistemas de numeración 14
Numeración Octal 16
Numeración Hexadecimal 17
Numeración Binaria 18
La lógica, breve reseña histórica 20
Compuertas electrónicas digitales 21
Compuerta AND 23
Compuerta OR 24
NOT negador o inversor 26
YES buffer o amplificador 27
Compuerta NAND 28
Compuerta NOR 30
Compuerta XOR 31
Compuerta XNOR 32
El bit, el byte y el nibble 33
Conversión binario a decimal 35
Conversión decimal a binario 36
Conversión binario a hexadecimal 37
Conversión hexadecimal a binario 39
Código BCD 41
Código ASCII 41
Set de caracteres ASCII 43
Microcontrolador PIC 16F628A 45
81
Características de la CPU interna 48
Características especiales del MCU 49
Características de los periféricos 50
Arquitectura interna 51
Memoria FLASH de programa 52
Memoria RAM – Registros generales - 54
Registro de trabajo W 56
Registro STATUS 56
Modos de Direccionamiento 58
Direccionamiento Inmediato 58
Direccionamiento Directo 59
Direccionamiento Indirecto 60
Direccionamiento Relativo 62
Vector de RESET 64
Vector de INTERRUPCIÓN 65
Fuentes de Interrupciones 65
Registro INTCON 67
Registro PIE1 68
Registro PIR1 69
Configurando pines de entrada/salida 71
Registro OPTION 73
Configuraciones de base 74
USER ID 75
Módulos periféricos 75
Sumario de Instrucciones 76
Instrucciones orientadas al BYTE 76
Instrucciones orientadas al BIT 77
Instrucciones de control y literal 78
82