Professional Documents
Culture Documents
PROLOGO
Estos apuntes fueron elaborados en un trabajo conjunto entre el M. en C.Ing.
Jos Angel Castillo Castro, M en C. Csar Augusto Leal Chapa, y el M. En C.
Adrin Garca Mederez, profesores de la materia de Electrnica Lgica III (Diseo
con Microprocesadores) que se imparte en las carreras de Ingeniero en Control y
Computacin e Ingeniero en Electrnica y Comunicaciones de la Facultad de
Ingeniera Mecnica Elctrica de la UANL.
temas
fueron
desarrollados
alrededor
del
Microcontrolador
TABLA DE CONTENIDO
PROLOGO..................................................................................................... 1
INDICE........................................................................................................... 2
RESUMEN..................................................................................................... 4
1.Introduccin ................................................................................................ 5
19
22
27
27
31
34
36
37
42
5. Interrupciones .....................................................................................
47
Conclusiones ............................................................................................... 52
Referencias.................................................................................................. 53
GLOSARIO ................................................................................................ 55
RESUMEN
CAPITULO 1
Introduccin
1.1 ANTECEDENTES
Uno de los problemas bsicos en la enseanza de microprocesadores es que
ha sido empleado ampliamente el mtodo tradicional de exposicin descriptiva, con
resultados poco favorables, ya que se desvincula la teora de la aplicacin del
conocimiento.
CAPITULO 2
Descripcin del PCBUG11
Objetivo
El objetivo de este tema es el de presentar y describir el Sistema de Evaluacin
PCBUG11 como herramienta de desarrollo de aplicaciones con Microprocesadores.
INTRODUCCION
Copy a:*.* c:
Ejemplo.-
Una vez que se han determinado los parmetros, se tiene enseguida la opcin
de ejecutar el programa monitor.
Se recomienda crear un archivo PCBUG.bat que sea ejecutado desde el
directorio raz y que contenga los siguientes comandos:
cd PCBUG11
PCBUGII [Parmetro MCU] [Parmetro puerto] [Parmetro baud]
Para as tener un procedimiento de inicio rpido.
Ventana de ayuda.- Esta ventana muestra ayudas para el uso de los comandos
del PCBUG11.
10
Ejemplo:
11
12
Reset
b7
b6
b5
b4
b3
b2
b1
b0
PTCON
BPRT3
BPRT2
BPRT1
BPRT0
$1035
Cada bit BPTRx protege a cada uno de los cuatro grupos de 512 bytes del
EEPROM de acuerdo con la siguiente tabla.
BIT
BLOQUE PROTEGIDO
BPTR0
$F800-$F9FF
512 Bytes
BPTR1
$FA00-$FBFF
512 Bytes
BPTR2
$FC00-$FDFF
512 Bytes
BPTR3
$FE00-$FFFF
512 Bytes
Tabla 2.1 Asignacin de bits del registro BPROT para proteccin del EEPROM.
13
>ASM $F800(Enter)
LDAA
#$5F
$F802 >
LDAB
#$32
$F802 >
ABA
4.- Una vez capturados los cdigos debe de programarse un punto de quiebre con
el comando BREAK, en este caso en la $F805 que es la siguiente localidad de
memoria a la ltima instruccin del programa.
>BREAK $F805(Enter)
14
>G $F800
PC=$F805
ACCA=$91
ACCB=$32
CCR=$68
6811.TBL
15
HOF
MOT8
ORG
0F800H
LDA
#5FH
LDAB $32H
ABA
Donde:
C16:
CROSS16
SUMA.ASM:
Programa fuente
16
[-L SUMA.LIS]:
[-H SUMA.S19]:
17
CAPITULO 3
Modos de Direccionamiento
OBJETIVO
Apoyar el estudio de los modos de direccionamiento, mediante la
elaboracin de pequeos programas que ejecuten instrucciones en cada modo.
INTRODUCCION
Para
los
microprocesadores
direccionamiento son:
-
inherente
inmediato
directo
extendido
indexado
relativo
de
la
familia
HC11
los
modos
de
18
b) Listado
ST
Incrementa el acumulador A
Interrupcin por software
INCA
SWI
c) Estatus
Antes de la ejecucin
ACCA= nn
A + 1A
Despues de la ejecuccin
ACCA= nn+1
FIN
EJEMPLO.- 2
Instruccin incrementa el registro ndice X
Cdigo de instruccin 08
Mnemnico INX
PROGRAMA:
b) Listado
INX
SWI
c) Estatus
Antes de la ejecucin
Ix = nnnn
Ix + 1Ix
Despues de la ejecuccin
FIN
Ix = nnnn+1
19
En este modo la instruccin esta formada por 2 bytes, uno para el cdigo de
instruccin y otro para el operando; para las instrucciones relacionadas con el
registro ndice Y se requieren 3 bytes. El nombre de inmediato significa que el
operando est inmediatamente despus del cdigo de instruccin.
CODIGO DE LA
INSTRUCCIN
OPERANDO
Fig. 3.4 Estructura de una instruccin del modo inmediato
EJEMPLO.- 3
Cargar el acumulador A con el nmero hexadecimal 3
Instruccin carga el acumulador A en modo inmediato
Cdigo de instruccin 86
Mnemnico LDAA
PROGRAMA:
a) Diagrama de flujo
ST
b) Listado
c) Estatus
Antes de la ejecucin
en modo inmediato.
A = nn
Despus de la ejecucin
A 3A
A = 3A
Memoria
86
3A
86
3A
FIN
20
EJEMPLO.- 5
Cargar el registro ndice X con FFFF
Instruccin carga el registro ndice en modo inmediato
Cdigo de instruccin CE
Mnemnico LDX
PROGRAMA:
a) Diagrama de flujo
ST
Ix FFFF
b) Listado
c) Estatus
Antes de la ejecucin
SWI
modo inmediato.
del programa
Ix = nnnn
Despus de la ejecuccin
FIN
Ix = FFFF
En este modo la instruccin est formada por 2 bytes, uno para el cdigo de
instruccin y otro para indicar la localizacin del operando; para instrucciones
relacionadas con el registro ndice Y se requieren 3 bytes.
CODIGO DE LA
INSTRUCCIN
DIRECCION DEL
OPERANDO
Fig. 3.7 Estructura de una instruccin del modo directo.
Al indicar la direccin del operando solo con un byte, se restringe el uso de
este modo a la parte ms baja de memoria de 0000 a 00FF, es decir, los primeros
256 bytes.
21
EJEMPLO.- 6
Cargar el acumulador A con el contenido de la localidad 0050.
Instruccin carga el acumulador A en modo directo.
Cdigo de instruccin 96
Mnemnico LDAA
EJEMPLO.- 7
PROGRAMA:
a) Diagrama de fluj0
b) Listado
c) Estatus
Memoria
ST
A (50)
. SWI
A = nn
0050
Despus
A = OPERANDO
FIN
OPERANDO
OPERANDO
22
En este modelo la instruccin est formada por 3 bytes, uno para el cdigo
de instruccin y los dos restantes para indicar la direccin del operando; para
instrucciones relacionadas con el registro ndice Y se requieren 4 bytes. El
modo extendido es una extensin del modo directo ya que al usar2 bytes para
indicar la direccin se puede tener acceso a todo el mapa de memoria de 0000 a
FFFF.
a)
b)
FFFF
CODIGO DE
INSTRUCCION
EXTENDIDO
LOCALIZACION
DEL
OPERANDO
2 BYTES
00FF
0000
DIRECTO 0000
EJEMPLO.- 8
Cargar el acumulador A con el contenido de la localidad F800.
Instruccin carga el acumulador A en modo extendido.
Cdigo de instruccin B6
Mnemnico LDAA
PROGRAMA:
a) Diagrama de flujo
b) Listado
c) Estatus
Antes de la ejecucin
ST
en modo ext
SWI
A (F800)
FIN
A = nn
Memoria
F800
OPERANDO
F800
OPERANDO
23
CODIGO DE INSTRUCCIN
OFFSET
Fig. 3.13 Estructura de una instruccin del modo indexado
Direccin del operando = ( Ix + OFFSET )
EJEMPLO.- 10
Usando el modo indexado, cargar el acumulador A con el contenido de la localidad
0000
Instruccin carga el acumulador A en modo indexado
Cdigo de instruccin A6
Mnemnico LDAA
PROGRAMA:
a) Diagrama de flujo
ST
b) Listado
c) Estatus
memoria
SWI
Ix = 0000
Antes de la ejecucin
A(Ix + 00)
Ix
0000
A = nn
Despus de la ejecucin
FIN
Ix
0000
A = operando
OPERANDO
0000
0000
OPERANDO
24
CODIGO DE INSTRUCCIN
OFFSET
Fig. 3.16 Estructura de una instruccin de modo relativo.
Las instrucciones en modo relativo se clasifican en condicionadas y no
condicionadas, el concepto de condicionamiento significa para que se ejecute la
instruccin, es necesario que se presente en el registro de cdigo de condicin el
estatus para el cual fue diseada la instruccin, a este tipo de instrucciones se les
llama branch, ramificaciones o bifurcaciones condicionadas, cuando la instruccin
no interroga o prueba el estado de registro de cdigo de condicin es una
instruccin no condicionada.
EJEMPLO.- 12
Usar la instruccin de branch no condicionado branch always.
Instruccin branch always
Cdigo de instruccin 20
25
Mnemnico BRA
PROGRAMA:
a) Diagrama de flujo
b) Listado
Lazo:
c) Estatus
BRA Lazo ;Brinco incondicionado
st
Al ejecutar el programa
ste se ciclar brincando
la misma direccin de la
instruccin.
bra
Fig. 3.17 Programa ejemplo para verificar el adecuado clculo del Offset.
EJEMPLO.- 13
Probar la instruccin branch if carry set
Instruccin ramifica si el bit de acarreo es 1
Cdigo de instruccin 25
Mnemnico BCS
PROCEDIMIENTO:
a)Usar previamente una instruccin que altere el registro de cdigo de condicin
ST
b)Aplicar la instruccin de BCS
Instruccin que altere
al registro de cdigo
de condicin
BCS
C=1
C=0
FIN
FIN
26
a) Diagrama de flujo
Listado
b) Diagrama de flujo
a) Listado
b)
c) Estatus
ST
ST
En el programa del inciso a)
A FF
LDAA
A FELDAA #$FF
#$FF
INCA
INCA
A + 1 A BCS
FIN
A + 1 BCS
A
FIN
SWI
FIN:
BCS
BCS
C=1
SWI
SWI
FIN:
SWI
BCS
C=0
C=1
FIN
C=0
FIN
FIN
FIN
27
CAPITULO 4
Estrategias bsicas para el Diseo de Programas
OBJETIVO
El objetivo de este tema es el de apoyar el proceso de aprendizaje de la
programacin
con Microprocesadores revisando una serie de modelos de
programacin que consisten en tcnicas bsicas de manipulacin de datos usando
los recursos que ofrece el microprocesador y que pueden darse solucin a un
conjunto de problemas semejantes.
4.1 PROGRAMAS ITERATIVOS O DE LAZO
28
LAZO
b)
SECCIN DE
INICIO
SECCIN DE
INICIO
SECCION DE
PROCESO
SECCION DE
CONTROL DE
LAZO
SE HA
COMPLETADO
LA TAREA DEL
LAZO?
NO
SI
SE HA
COMPLETADO
LA TAREA DEL
LAZO?
SECCIN DE
CONCLUSION
SECCIN DE
PROCESO
SECCIN DE
CONCLUSION
FIN
FIN
Solucin:
Dado que la cantidad total de bits que contiene una palabra almacenada
contenida en la localidad 0050 es de 8, entonces el nmero de iteraciones que
tendr que verificar el lazo es tambin de 8, por tal motivo habr que establecer un
contador del nmero iteraciones al inicio del programa que se decremente en uno a
cada iteracin, la direccin 51 puede operar como un contador de nmero de bits
igual a uno, para detectar si los bits son igual a uno se puede efectuar un
corrimiento a la derecha, haciendo que el dato se cargue en el bit de acarreo de
29
INICIO
PREGUNTAR
SI EL BIT ES
IGUAL A 1
NO
SI
INCREMENTAR EL CONTADOR
DE # DE BITS A 1, 0051
DECREMENTAR
EN
UNO
EL
CONTADOR DE # DE ITERACIONES
PREGUNTAR
SI ES LA
ULTIMA
ITERACION
NO
SI
FIN
Fig. 4.2 Diagrama de flujo de un programa que cuenta los bit con valor 1 de la
direccin 0050
30
INI
0050
CLR
$0051
LDAB
#$08
LAZO1; LSRA
08B
A(0050)
BCC
LAZO
INC
LAZO;
BNE
$0051
INCB
LAZO1
ALSR
BCC
0051+10051
B-1 B
BNE
0
=0
FIN
31
RESULTADO
004F
LONGITUD DE LA SERIE
0050
SERIE
Solucin:
Tomar el dato de la longitud de la serie como el contador de iteraciones,
cargar el registro apuntador o indicador con la direccin de inicio de la serie, leer el
primer dato de la serie en modo indexado, incrementar el indicador y sumar con el
siguiente, as sucesivamente tantas veces como lo permita el contador de
iteraciones, por ltimo colocar el resultado en la direccin 004F.
32
DECREMENTAR EL CONTADOR DE
LA LONGITUD DE LA SERIE
PREGUNTAR
SI ES EL ULTIMO
DATO DE LA SERIE
FIN
33
B 004F
Ix 0050
A (Ix + 00)
Ix + 1 Ix
A + (Ix + 00) A
B-1 B
BNE
A 004E
FIN
c) Listado
CLR
$4E
LDAB
$4F
LDX
#$004F
;inicializa apuntador
LDAA
0,X
LAZO:
INX
;incrementa apuntador
ADDA
DECB
BNE
STAA
SWI
0,X
;suma operando
;decrementa longitud
;ltimo operando?
;deposita resultado
;interrupcin por software
LAZO
$4E
34
EJEMPLO.- 4.3
Programa
de
retardo
usando
un
acumulador
como
contador
decrementandolo continuamente.
Tiempo = [ a + (b + c)*256 + d ]ciclos x tcm
INICIO
Donde:
A FF
A - 1 A
modo inherente
NO
FIN
35
EJEMPLO.- 4.4
A XX
Donde:
Ix XXXX
Ix - 1 Ix
Ix = 0
SI
A-1A
NO
A=0
NO
relativo
SI
FIN
SE HA
CUMPLIDO
CON EL RETARDO?
NO
SI
EJECUTA LA SECCION
DEL PROGRAMA QUE
ESPERA
36
c) Listado
INICIO
LDAA
A FF
LAZO:
A - 1 A
#$FF
DECA
;establece retardo
;decrementa lazo2
BNE
LAZO
;fin de lazo?
SWI
BNE
=0
FIN
b) Diagrama de flujo en detalle
c) Listado
INICIO
LDX
Ix FFFF
#$FFFF
;establece retardo
LAZO
;fin de lazo?
DEX
LAZO:
Ix - 1 Ix
BNE
SWI
;decrementa lazo
BNE
FIN
37
CONTENIDO
VARIABLE INDEPENDIENTE
LLAVE O CLAVE DE ENTRADA
AXB
A
A
CODIGO A
BINARIO
BINARIO
BCD
VARIABLE DEPENDIENTE
RESULTADO O SALIDA
= RESULTADO DE LA MULTIPLICACION
= Log A
= A
= CODIGO B
= DECIMAL
= GRAY
= 7 SEGMENTOS
38
Cuando se cuenta con una tabla de datos variables, por lo general surge la
necesidad de obtener informacin de sta, tal podra ser calcular el promedio de los
valores, encontrar el nmero mayor, ordenar los valores con algn criterio, etc.
Estas operaciones implican efectuar la misma operacin a todos y cada uno de los
datos de la tabla, por lo que aparece la necesidad de construir un algoritmo tipo
lazo iterativo.
Ejemplo 4.6 Disear un programa que borre (escriba ceros) en una tabla.
00
00
00
00
00
00
CD00
CBFF
39
b) Diagrama
INICIO
INICIO
CARGAR EL INDICADOR O
APUNTADOR CON EL INICIO
lxC000
00(lx+00)
BORRAR LA
LOCALIDAD EN MODO
lx-C3FF
ES LA ULTIMA
DIRECCION?
BEQ
NO
SI
FIN
INCREMENTAR EL
INDICADOR
>0
FIN
lx +1 lx
de flujo de detalle
c) Listado
LDX
LAZO1;
CLR
0,X
CPX
#$C3FF
BEQ
LAZO
INX
LAZO;
BRA
LAZO1
SWI
LAZO1
Ejemplo 4.7 Disear un programa que por medio de una tabla efecte una
conversin de cdigo binario a BCD.
40
C000
1 INICIO
2
3
4
5
6
7
8
9
A
B
C
D
E
C00F
FINAL
C100
DESTINO
TABLA ORIGINAL
41
b)
INICIO
INICIO
lxC000
lyC100
A (lx+00)
A (ly+00)
lx- C00F
PREGUNTAR SI ES EL
ULTIMO DATO
SI
NO
INCREMENTAR AMBOS
REGISTROS INDICE
FIN
BEQ
V
F
lx+1lx
ly+1ly
FIN
c)Listado
LDX
LDY
LAZO;
LDAA
0,X
STAA
CPX
BEQ
INX
INY
BRA
LAZO;
SWI
#$C000
#$C100
0,X
#$C00F
LAZO
LAZO1
42
PROGRAMAS PROPUESTOS
4.5 SUBRUTINAS
Una subrutina es un programa que cumple con alguna funcin especfica. Las
subrutinas pueden accesarse o ser llamadas por el programa principal una o tantas
veces como sea necesario. La ventaja inmediata del uso de una subrutina que se
emplea varias veces, es que no es necesario integrarla al programa principal,
logrando as su simplificacin y reduccin de tamao.
Las
instrucciones
asociadas
las
subrutinas
son,
JSR,
JUMP
TO
43
44
INICIO
STACK
PROGRAMA
PRINCIPAL
______________
______________
______________
______________
______________
______________
JSR
DIR H
DIR L
PC
PCH
PCL
BSR
OFFSET
SUBRUTINA
__________
__________
__________
__________
CONTINUACION
DEL
PROGRAMA
PRINCIPAL
______________
______________
______________
______________
FIN O RECICLA
RTS
STACK
PCH
PCL
Este proceso puede anidarse, es decir una subrutina puede a su vez llamar a
otra subrutina y as sucesivamente, tantas veces como lo permita el tamao del
STACK que almacena el contador del programa para retornar en cada uno de los
casos.
STACK
INICIO
PROGRAMA
PRINCIPAL
__________
PCH
PCL
PCH
PCL
__________
__________
JSR
DIR H
DIR L
PC
CONTINUACION
DEL
PROGRAMA
PRINCIPAL
()
()
A
A
BSR
OFFSET
SUBRUTINA
A
___________
___________
__________
RTS
JSR o BSR
SUBRUTINA
B
___________
___________
__________
RTS
STACK
FIN O RECICLA
PCH
PCL
PCH
PCL
PP
PP
(A)
(A)
45
INICIO
SUBRUTINA
PROGRAMA
PRINCIPAL
a)
PARAMETROS
DE LA
SUBRUTINA
b)
JSR
DIR H
O
OFFSET
c)
DIR L
d)
PC
ALMACENA EL
CONTENIDO DE LOS
REGISTROS
PREVIAMENTE USADOS
POR EL PROGRAMA
PRINCIPAL, ALGUNA
MEMORIA AUXILIAR.
INICIA LA EJECUCION DE
LA SUBRUTINA
CONTINUACION
DEL
PROGRAMA
PRINCIPAL
FIN O RECICLA
46
INICIO
A XX
lx XXXX
lx -1lx
lx= 0
NO
SI
A -1A
A=0
NO
SI
FIN
PROGRAMA
PRINCIPAL
___________
___________
___________
___________
___________
COMENTARIOS:
a)
PARAMETRO
AXX
JSR o BSR
RETARDO
SUBRUTINA
Ix MEMORIA
AUXILIAR
b)
Ix XXXX
CONTINUA
CON EL
PROGRAMA
PRINCIPAL
___________
___________
___________
___________
___________
FIN
O
RECICLA
Ix 1 Ix
Ix = 0
SI
NO
A1 A
A=0
NO
SI
Ix MEMORIA
AUXILIAR
b)
RTS
c)
47
CAPITULO 6
Interrupciones
OBJETIVO
El Objetivo de este tema es el apoyar el estudio de las condiciones de
excepcin como lo es el estado de Reset y las Interrupciones.
INTRODUCCION
As una interrupcin permite al MPU atender o realizar alguna otra accin, por
ejemplo ejecutar una rutina llamada de interrupcin, que atienda la presencia
aleatoria de eventos tales como: alarmas, fallas de alimentacin, contabilizacin de
perodos de tiempo, protocolos de intercambio de informacin con perfericos, etc. y
que liberan al programa principal de prestar atencin constante a eventualidades
48
Reset
+V
RST
XIRQ
MPU
IRQ
7.1 RESET
49
contenido de las direcciones FFFE y FFFF vector de RESET, que debe contener la
direccin de inicio de la rutina de establecimiento dando as inicio a esta rutina.
PC
RST
ESTABLECE LA BANDERA DE
INTERRUPCION I=1
CARGA
CONTADOR
FFFE
FFFF
EL
DEL
INICIA LA RUTINA DE
RESTABLECIMIENTO
INICIA LA RUTINA DE
RESTABLECIMIENTO
PROGRAMA DE APLICACION
50
INTERRUPCION
POR HARDWARE
INTERRUPCION
POR SOFTWARE
ES NO
ENMASCARABLE?
NO
SI
ESTA
PUESTA
LA BANDERA DE
INTERRUPCION
SI
NO
CONTINUA CON
EL PROGRAMA
PRINCIPAL
FFF8
FFF9
FFFA
FFFB
FFFC
FFFD
FFFE
FFFF
ALMACENA LOS
REGISTROS DEL
MPU EN EL STACK
ENMASCARABLE
POR
SOFTWARE
NO
ENMASCARABLE
ESTABLECE LA
BANDERA DE
INTERRUPCION
STACK
CC
A
B
Ix H
Ix L
PC H
PC L
CARGA EL VECTOR
DE INTERRUPCION
EN EL CONTADOR
DEL PROGRAMA
RESET
EJECUTA LA
RUTINA DE
INTERRUPCI
51
INTERRUPCIONES
PROGRAMA
PRINCIPAL
RUTINA
REGISTROS
AL STACK
DE
INTERRUPCION
RECOBRA LOS
REGISTROS
DEL STACK
RTI
CONTINUA
CON EL
PROGRAMA
PRINCIPAL
FIN
O
RECICLA
RETORNO
52
CONCLUSIONES Y RECOMENDACIONES
53
REFERENCIAS
1. Bishop Ron ; Basic Microprocessors and the 6800 ; Copyright 1979 ; Hayden
Book Company inc., 1978.
4. Kelly-Bootle & Fowler ; 68000, 68010, 68020 ; 1 edicin ; The Waite Grove
inc., 1985.
54
12. Savant Roden Carpeter ; Diseo electrnico ; 2 edicin ; AddisonWesley Iberoamericana, 1992.
55
GLOSARIO
Algoritmo
Baud
Bit
Buffer
Byte
Cdigo Mquina
Comunicacin Asncrona
Comunicacin Serie
Comunicacin Sncrona
56
Full duplex
GLOSARIO (CONTINUACION)
Lenguaje Ensamblador
Microcontrolador
Microprocesador
Mnemnico
PCBUG11
Reset
Stack