Professional Documents
Culture Documents
INDICE
INTRODUCCION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CAPITULO 1 .- EL MICROCONTROLADOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
5
7
7
8
9
11
13
14
15
15
16
18
21
21
24
28
38
40
41
43
47
47
51
54
55
56
APENDICES
I - PROBLEMAS CURSO HC11...
II - PROBLEMAS DE APLICACIN...
61
73
2.1
2.2
2.3
2.4
2.5
2.6
- LENGUAJE DE MAQUINA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- LENGUAJE ENSAMBLADOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- LENGUAJE DE ALTO NIVEL.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- ELEMENTOS DEL LENGUAJE ENSAMBLADOR. . . . . . . . . . . . . . . .
- DIRECTIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- TIPOS DE ENSAMBLADORES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1 - ARQUITECTURA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 - MODOS DE OPERACION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 - MEMORIA DEL 68CH11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1
4.2
4.3
4.4
4.5
4.6
4.7
5.1
5.2
5.3
5.4
5.5
- MODELO DE PROGRAMACION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- MODOS DE DIRECCIONAMIENTO. . . . . . . . . . . . . . . . . . . . . . . . . . .
- CONJUNTO DE INSTRUCCIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . .
- TECNICAS DE PROGRAMACIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- EL SISTEMA MONITOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- EL SISTEMA MONITOR SM11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- RUTINAS DE SERVICIO DEL SM11. . . . . . . . . . . . . . . . . . . . . . . . . . . .
INTRODUCCION
MINED
Los sistemas con microprocesador pueden clasificarse
como de aplicacin general (reprogramables) o aplicacin
dedicada (programacin fija). Los sistemas de aplicacin general
son las computadoras clsicas que contienen alguna forma de
almacenamiento masivo en donde se guardan diferentes
programas que el usuario puede ir llamando y en la que puede
adems desarrollar programas en algn lenguaje conforme se
requieran. Los dispositivos de Entrada/Salida conectados a este sistema son para comunicarse
con el usuario.
Los sistemas de aplicacin dedicada por otro lado no se parecen a una computadora
clsica. En estos sistemas los programas se almacenan en memorias ROM o EPROM y rara vez
contienen formas para almacenamiento masivo. Los dispositivos Entrada/Salida no se limitan a
la comunicacin con el usuario sino que tambin monitorean y controlan mecanismos y/o
procesos fsicos.
Las aplicaciones de control dedicado pueden dividirse en: control secuencial, control de
lazo cerrado y adquisicin y proceso de datos. El mas simple es el control secuencial que tiene
que ver con el control y monitoreo de un sistema como una secuencia de eventos. El control de
lazo cerrado consiste en monitorear de cerca la salida de un proceso o dispositivo y actuar sobre
sus entradas para obtener la salida deseada. Estas dos categoras involucran programas fijos que
interactuan directamente con el exterior en los que sus estructuras de datos son pequeas y
simples. La tercer categora (adquisicin y proceso de datos) involucra tambin programas fijos
pero la interface con el mundo exterior y las estructuras de datos se tornan grandes y
complicadas.
En la actualidad la mayora de las aplicaciones de control secuencial y de control de
lazo cerrado pueden ser cubiertas satisfactoriamente por un Microcontrolador, dispositivo que
agrupa al Microprocesador, memorias RAM, EPROM y/o EEPROM, puertos y perifricos en
un solo circuito integrado. Desde luego la cantidad de memoria y puertos es muy limitada y en
ocasiones tambin la capacidad del Microprocesador. No obstante, se estn mejorando da con
da y algunos de estos Microcontroladores tienen ya el poder de una computadora personal de
principios de la dcada pasada por lo que es necesario estar familiarizado con esta nueva
tecnologa.
Las familias de Microcontroladores mas sobresalientes son la INTEL 8048, 8051 y
8096 y MOTOROLA 6801, 6805 y 68HC11. Las nuevas familias de microcontroladores
econmicos tipo RISC como el PIC de MICROCHIP y el AVR de ATMEL han revolucionado
el diseo basado en microcontrolador y desplazado a la mayora de soluciones con otros tipos de
dispositivos lgicos programables.
En las paginas siguientes se da una introduccin a la familia 68HC11 y en particular
del MC68HC711E20 que es una versin con 20 Kb de OTPROM (One Time Programmable
Read Only Memory), 512 bytes de EEPROM y 768 bytes de RAM. Estos apuntes no
pretenden ser un libro de texto ni contienen toda la informacin al respecto. Mas bien son
memorias que introducen los puntos prcticos o ms importantes tratados en cursos
Universitarios o de Capacitacin.
Indice
CAPITULO 1
EL MICROCONTROLADOR
El centro de una computadora es la Unidad Central
Proceso (CPU). El microprocesador es un CPU contenido
en un solo circuito integrado. Un microcomputador se forma
con el microprocesador complementado con memoria de
programa ROM (Read Only Memory), memoria de proceso
RAM (Random Access Memory) y puertos de entrada y
salida.
Un microcontrolador es un simple circuito integrado que incluye muchas de las
funciones encontradas en un sistema microcomputador. Esta formado por un CPU,
memoria y puertos contenidos en una sola pastilla. Actualmente los microcontroladores
pueden ser programados por el usuario grabando en su memoria la serie de instrucciones
que forman un programa de aplicacin.
Indice
MINED 11
Indice
Numero 3 en binario.
Complemento a 1.
Complemento a 2.
HEX
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
BINARIO
DECIMAL
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
10
1011
11
1100
12
1101
13
1110
14
1111
15
BINARIO NATURAL
(NUMEROS SIN SIGNO)
HEX
8
9
A
B
C
D
E
F
0
1
2
3
4
5
6
7
BINARIO
DECIMAL
1000
-8
1001
-7
1010
-6
1011
-5
1100
-4
1101
-3
1110
-2
1111
-1
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
COMPLEMENTO A DOS
(NUMEROS CON SIGNO)
Indice 5
R=X+M
__
__
C = X7 M7 + M7 R7 + X7 R7
__ __ __
V = X7 M7 R7 + X7 M7 R7
Donde:
X7 y M7 - Bits ms significativos de los datos a sumar.
R7 - Bit ms significativo (MSB) del resultado.
De esta forma el mismo proceso de suma puede ser utilizado para los problemas
con signo o sin signo, distinguindose solo por el bit auxiliar que se use en su
interpretacin. Por ejemplo:
NATURAL
OPERACION
6+
0110+
11
1011
17 (1) <-0001
C=1
CON SIGNO
6+
-5
(OK) 1
V=0
NATURAL
5+
4
9 (OK)
C=0
V=1
MINED 11
Indice
CAPITULO II
LENGUAJES DEL MICROCONTROLADOR
2.1 EL LENGUAJE DE MAQUINA
El Microcontrolador solo reconoce instrucciones y
datos como patrones binarios. Es decir una instruccin es un
patrn binario que debe estar disponible a la entrada de datos
del CPU en el tiempo preciso a fin de que pueda ser
reconocida adecuadamente.
Un programa para el Microcontrolador es una serie de instrucciones que lo hace
realizar una tarea definida. Entonces un programa es un conjunto de nmeros binarios
(niveles lgicos) y recibe el nombre de LENGUAJE DE MAQUINA o PROGRAMA
OBJETO. Por ejemplo un programa en Lenguaje de Mquina se vera as:
BINARIO
HEXADECIMAL
10110110
00000000
01100000
10111011
00000000
01100001
10110111
00000000
01100010
B6
00
60
BB
00
61
B7
00
62
Indice
0060H
0061H
0062H
El programa aun esta lejos de ser obvio, pero al menos algunas partes son
comprensibles. Se puede apreciar que en una lnea aparecen instrucciones y datos o
direcciones.
Cuando se tiene un programa en lenguaje ensamblador se necesita traducirlo a
lenguaje de mquina (nmeros hexadecimales o binarios) actividad que se puede realizar
manualmente o que puede ser asignada a una Microcomputadora (o sea a un
Microprocesador). La Microcomputadora nunca se equivoca cuando traduce cdigos.
Siempre sabe cuantos bytes y en que formato los requiere una instruccin. El sistema que
realiza esta tarea se le da el nombre de Ensamblador (assembler). El programa ensamblador
traduce un programa usuario o programa Fuente escrito con mnemnicos, a lenguaje de
mquina o programa Objeto, que el Microcontrolador pueda ejecutar.
PROGRAMA FUENTE
nombre.ASM
PC
Programa OBJETO
nombre.OBJ
MINED 11
Indice
Si todas las ventajas del lenguaje de alto nivel son ciertas, si es posible escribir
programas ms fcil y rpidamente, por qu meterse con el ensamblador?, Quin quiere
preocuparse por registros, cdigos de instruccin, mnemnicos y todas esas cosas?. Bueno,
existen algunas desventajas que se deben tomar en cuenta.
La traduccin de un lenguaje de alto nivel a lenguaje de mquina es ineficiente. La
razn bsica es que la compilacin es un proceso automtico que debe aceptar una gran
cantidad de posibilidades. Un compilador no se da cuenta cuando una variable ya no va a ser
utilizada y puede descartarse, o cuando se debe usar un registro en vez de una localidad de
memoria.
Un programador experimentado puede tener ventaja de reducir el uso de memoria y
el tiempo de ejecucin adaptando el problema al microprocesador en particular, haciendo
uso de trucos especiales.
MINED 11
Indice 9
Existe un lenguaje de alto nivel para cada tipo de tarea requerida. Por
ejemplo un lenguaje que expresa los problemas algebraicamente le ser difcil
controlar una impresora, editar una serie de caracteres o monitorear un
sistema de alarma por que el problema no puede ser expresado en notacin algebraica.
Las desventajas del lenguaje de alto nivel se pueden resumir as:
Reglas especiales
Lenguajes comnmente orientados (negocios, matemticas, etc.)
Programas ineficientes. Dificultad para optimizar cdigos y satisfacer
requerimientos de tiempo y memoria.
Incapacidad de usar las caractersticas especiales de una computadora.
10
Programas grandes.
Bajo volumen de produccin,
Aplicaciones que involucran mas computo que control Entrada/Salida.
Compatibilidad con aplicaciones similares.
MINED 11
Indice
CAMPO DE
MNEMONICO
CAMPO DE
OPERANDO
CAMPO DE
COMENTARIO
INICIO
LDAA
ADDA
STAA
?
.
.
.
RTS
;
.DB
.DB
.DB
VAL1
VAL2
SUMA
?
.
.
.
;Primer dato en A
;Agregar segundo dato
;Resultado
;Siguiente instruccin
.
.
.
;Termina subrutina
0
1
0
SIGUE
.
.
.
FIN
VAL1
VAL2
SUMA
MINED 11
Indice 11
DATO EN
DECIMAL
HEXADECIMAL
BINARIO
OCTAL
ASCII
MOTOROLA
numero
$ numero
% numero
@ numero
carcter
INTEL
numero
numero H
numero B
numero Q
carcter
12
MINED 11
Indice
2.5 D I R E C T I V O S
Son instrucciones que no se traducen a lenguaje de mquina sino que
realizan funciones especiales dentro del proceso de ensamble como por ejemplo asignar un
rea de memoria al programa, definir variables, dar entrada de datos a memoria, etc.
Algunos de los directivos mas comunes son:
.DB (Data Byte). Permite grabar un byte directamente. Tambin puede encontrarse
como FCB o DATA.
.DW (Data Word). Permite grabar dos bytes directamente. Tambin puede
encontrarse como FDB.
MINED 11
Indice 13
14
MINED 11
Indice
CAPITULO III
EL MICROCONTROLADOR 68HC11
ARQUITECTURA
El Microcontrolador 68HC11 desarrollado por
Motorola en 1984 con tecnologa HCMOS (High-density
Complementary Metal Oxide Semiconductor), combina la
alta velocidad y el tamao reducido con el bajo consumo de
potencia y la alta inmunidad al ruido. Su memoria interna incluye hasta 20 K bytes de
OTPROM, 512 bytes de EEPROM y 768 bytes de RAM.
Indice
XTAL EXTAL
OSC
MODE CONTROL
XIRQ RESET
ITERRUPT
LOGIC
PROM
20 KBYTES
12 KBYTES
PROM
MC68HC11 CPU
RAM768
512 BYTES
RAM
BYTES
ADDRES/DATA
SERIAL
PERIPHERICAL
INTERFACE
SPI
SERIAL
COMUNICATION
INTERFACE
SCI
VDD
VSS
VRH
VRL
TxD
RxD
BUS EXPANSION
ADDRES
R/W
AS
PERIODIC INTERRUPT
SISTEMA
TIMER
OC2
OC3
OC4
OC5/IC4/OC1
IC1
IC2
IC3
ACUMULADOR PULSOS
PAI
COP
CLOCK LOGIC
IRQ
STRB
STRA
MODA MODB
(OR) (VSTBY)
A/D CONVERTER
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
PORT E
PD1
PD0
PORT D
PD5
PD4
PD3
PD2
PORT C
STRB/R/W
STRA/AS
CONTROL
AD7/PC7
AD6/PC6
AD5/PC5
AD4/PC4
AD3/PC3
AD2/PC2
AD1/PC1
AD0/PC0
PORT B
A15/PB7
A14/PB6
A13/PB5
A12/PB4
A11/PB3
A10/PB2
A9/PB1
A8/PB0
PA6
PA5
PA4
PA3
PA2
PA1
PA0
PA7
PORT A
CONTROL
MINED 11
Indice
MODA
1
1
0
0
0
1
0
1
MODO DE OPERACION
SIMPLE (SINGLE - CHIP)
EXPANDIDO
BOOTSTRAP
PRUEBA ESPECIAL
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
A15
A14
A13
A12
A11
A10
A9
A8
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
D1
D2
D3
D4
D5
D6
D7
D8
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
RS
LE
OE
R/W
A7
A6
A5
A4
A3
A2
A1
A0
WE
MC68HC711E20
D7
D6
D5
D4
D3
D2
D1
D0
Indice 17
MINED 11
Indice
EXT
$1000
EXT
EXT
$9000
103F
9000 8 KBYTE OTPROM
EXT
EXT
$B600
AFFF
B600 512 BYTE EEPROM
B7FF
EXT
EXT
$D000
$FFFF
BFCO
VECTORES EN
BFFF MODO ESPECIAL
FFFF
FFCO VECTORES DE
INTERRUPCION
FFFF
SIMPLE
BOOTSTRAP
TEST
EXPANDED
MINED 11
Indice 19
20
MINED 11
Indice
CAPITULO IV
PROGRAMACION DEL 68HC11
1.1.- MODELO DE PROGRAMACION
La Unidad Central de Proceso (CPU) del 68HC11
contiene las instrucciones del 6800 y el 6801 con la adicin
de 91 instrucciones mas. Especficamente las caractersticas
de este CPU son:
Indice
.
7
15
ACUMULADOR A 0 7
ACUMULADOR B
ACUMULADOR DOBLE D
0
0
15
REGISRO INDICE X
15
REGISRO INDICE Y
15
APUNTADOR STACK S
15
CONTADOR DE PROGRAMA PC
CODIGO DE CONDICION
7
S X
N Z
0
V C
RST EXTERNO
$FFFE : $FFFF
$BFFE : $BFFF
RST RELOJ
$FFFC : $FFFD
$BFFC : $BFFC
RESET COP
$FFFA : $FFFB
$BFFA : $BFFB
MINED 11
Indice
MINED 11
Indice 23
24
MINED 11
Indice
CODIGO
DIRECCION EFECTIVA
DATO
mmmm
mmmm + 1
CC
12
34
(# significa Inmediato y $ significa Hexadecimal). Esta instruccin puede ser de 2, 3 o
4 bytes: 2 para operaciones de 8 bits; 3 para operaciones de 16 bits y 4 para operaciones
con cdigo de operacin doble:
LDD
#$1234
(CODIGO)
MODO DIRECTO. En este modo el byte que sigue al cdigo de operacin indica
la direccin efectiva considerando el byte mas significativo de la direccin igual a 0. De
esta forma podemos accesar la primera pagina del mapa ($00 a $FF) con instrucciones de
solo 2 bytes. El tiempo de ejecucin de estas instrucciones se reduce al eliminar el acceso
requerido para el byte mas significativo de la direccin. En la mayora de aplicaciones esta
rea de 256 bytes esta ocupada por la memoria RAM. Sin embargo el MC68HC11 puede
ser configurado para combinar los registros internos (de la 00 a la $3F) y la RAM (de la
$40 a la $FF).
mmmm
mmmm + 1
CODIGO
DIR
DIRECCION EFECTIVA
00 : DIR
D6
12
Carga en B lo que hay en memoria 12H. Recurdese que el smbolo $ significa
Hexadecimal. Tambin puede usarse el smbolo < para indicar modo directo.
LDAB $12
MINED 11
(CODIGO)
Indice 25
CODIGO
DIRH
DIRL
mmmm + 1
DIRECCION EFECTIVA
DIRH : DIRL
STAB $1004
(CODIGO)
F7
10
04
26
LDAA
,X
;DIRECCION EFECTIVA = X
LDD
5,Y
;DIRECCION EFECTIVA = Y + 5
.EQU
CONST,8
ADDD
CONST,X
;DIRECCION EFECTIVA = X + 8
CLR
CONST*2,Y
MINED 11
Indice
AQUI
...
BCC
...
LDAB
....
AQUI
....
....
; PROGRAMA
;TOMA DE DESICION C = 1 ?
; EN FALSO CONTINUA
; BRINCA AQUI EN CONDICION VERDADERA
Debido a que las instrucciones en este modo usan solo un byte de OFFSET
(numero modificador con signo) tienen la capacidad de brincar a +127 o -128 localidades
de un punto dado. Esto limita la capacidad de programacin ya que en algunas ocasiones
ser necesario hacer un brinco intermedio para llegar a una localidad mas all de +127 o 128. En tales casos se tiene que arreglar el programa de tal manera que se utilice la
instruccin JMP (Jump) en modo extendido.
BRCLR
MINED 11
DD,inm,etiqueta
dd
mm
rr
13
CDIGO
DIRECCIN 1er OPERANDO
2do. OPERANDO EN INMEDIATO
OFFSET PARA BRINCAR
ff,X,inm,etiqueta
ff
mm
rr
1E
CDIGO
OFFSET CON RESPECTO A X
2do. OPERANDO EN INMEDIATO
OFFSET PARA BRINCAR A ETIQ.
Indice 27
28
MINED 11
Indice
Funcin
Clear Accumulator A
Clear Accumulator B
Clear Memory Byte
Exchange D with X
Exchange D with Y
Load Accumulator A
Load Accumulator B
Load Double Accumulator D
Pull A from Stack
Pull B from Stack
Push A onto Stack
Push B onto Stack
Store Accumulator A
Store Accumulator B
Store Double Accumulator D
Transfer A to B
Transfer A to CCR
Transfer B to A
Transfer CCR to A
MINED 11
Mnemnico
CLRA
CLRB
CLR
XGDX
EGDY
LDAA
LDAB
LDD
PULA
PULB
PSHA
PSHB
STAA
STAB
STD
TAB
TAP
TBA
TPA
IMM
DIR
EXT
INDX
INDY
INH
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Indice 29
Funcin
Add Accumulator B to X
Add Accumulator B to Y
Add Accumulators
Add memory to A
Add memory to B
Add memory to D (16bits)
Add with Carry to A
Add with Carry to B
Compare A to B
Compare A to Memory
Compare B to memory
Compare D to memory ( 16bit )
Decimal Adjust A ( for BCD )
Decrement Accumulator A
Decrement Accumulator B
Decrement Memory Byte
Increment Accumulator A
Increment Accumulator B
Increment Memory Byte
Subtract Memory from A
Subtract Memory from B
Subtract Memory from D (16Bit)
Subtract with Carry from A
Subtract with Carry from B
Test for Zero or Minus
Test for Zero or Minus A
Test for Zero or Minus B
Twos complement Accumulator A
Twos complement Accumulator B
Twos Complement Memory Byte
Mnemnico IMM
ABX
ABY
ABA
ADDA
X
ADDB
X
ADDD
X
ADCA
X
ADCB
X
CBA
CMPA
X
CMPB
X
CPD
X
DAA
DECA
DECB
DEC
INCA
INCB
INC
SUBA
X
SUBB
X
SUBD
X
SBCA
X
SBCB
X
TST
TSTA
TSTB
NEGA
NEGB
NEG
DIR
EXT
INDX
INDY
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
INH
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
30
MINED 11
Indice
Funcin
Multiply ( A * B => D)
Fractional Divide (D / X => X; r => D)
Integer Divide ( D / X => X ; r => D)
Mnemnico
MUL
FDIV
IDIV
INH
X
X
X
Mnemnico IMM
ANDA
X
ANDB
X
BITA
X
BITB
X
COM
COMA
COMB
EORA
X
EORB
X
ORAA
X
ORAB
X
DIR
X
X
X
X
EXT
X
X
X
X
X
INDX
X
X
X
X
X
INDY
X
X
X
X
X
INH
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Funcin
Bit(s) Test A with Memory
Bit(s) Test B with Memory
Clear Bits(s) in Memory
Set Bit(s) in Memory
Branch if Bit(s) Clear
Branch if Bit(s) Set
MINED 11
Mnemnico IMM
BITA
X
BITB
X
BCLR
BSET
BRCLR
BRSET
DIR
X
X
X
X
X
X
EXT
X
X
INDX
X
X
X
X
X
X
INDY
X
X
X
X
X
X
Indice 31
Funcin
Arithmetic Shift Left Memory
Arithmetic Shift Left A
Arithmetic Shift Left B
Arithmetic Shift Left Double
Arithmetic Shift Right Memory
Arithmetic Shift Right A
Arithmetic Shift Right B
(Logical Shift Left Memory)
(Logical Shift Left A)
(Logical Shift Left B)
(Logical Shift Left Double)
Logical Shift Right Memory
Logical Shift Right A
Logical Shift Right B
Logical Shift Right D
Rotate Left Memory
Rotate Left A
Rotate Left B
Rotate Right Memory
Rotate Right A
Rotate Right B
Mnemnico IMM
ASL
ASLA
ASLB
ASLD
ASR
ASRA
ASRB
(LSL)
(LSLA)
(LSLB)
(LSLD)
LSR
LSRA
LSRB
LSRD
ROL
ROLA
ROLB
ROR
RORA
RORB
DIR
EXT
X
INDX
X
INDY
X
INH
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
32
MINED 11
Indice
Funcin
Add Accumulator B to X
Add Accumulator B to Y
Compare X to Memory (16bit)
Compare Y to Memory (16bit)
Decrement Stack Pointer
Decrement Index Register X
Decrement Index Register Y
Increment Stack Pointer
Increment Index Register X
Increment Index Register Y
Load Index Register X
Load Index Register Y
Load Stack Pointer
Pull X from Stack
Pull Y from Stack
Push X onto Stack
Push Y onto Stack
Store Index Register X
Store Index Register Y
Store Stack pointer
Transfer SP to X
Transfer SP to Y
Transfer X to SP
Transfer Y to SP
Exchange D with X
Exchange D with Y
Mnemnico
ABX
ABY
CPX
CPY
DES
DEX
DEY
INS
INX
INY
LDX
LDY
LDS
PULX
PULY
PSHX
PSHY
STX
STY
STS
TSX
TSY
TXS
TYS
XGDX
XGDY
IMM
X
X
DIR
EXT
INDX
INDY
X
X
X
X
X
X
X
X
INH
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
MINED 11
Indice 33
Mnemnico
CLC
CLI
CLV
SEC
SEI
SEV
TAP
TPA
INH
X
X
X
X
X
X
X
X
Inicialmente puede parecer que debera existir una instruccin set y una clear para
cada uno de los 8 bits en el CCR; sin embargo, solo existen para 3 de los 8 bits (C,I y V) .
Existen buenas razones para no incluir las instrucciones set y clear para los otros 5 bits. Por
ejemplo el bit stop disable (S) es un caso inusual porque este bit esta creado para dejar
fuera a la funcin STOP, para aquellos quienes lo ven como una funcin no deseable en su
aplicacin. Si existieran las instrucciones set y clear para este bit lo hara mas fcil de
habilitar cuando este no fuera requerido o deshabilitarlo cuando este sea requerido. La
instruccin TAP nos proporciona la manera de cambiar el bit (S) pero reduce la
oportunidad de un cambio no deseable a (S).
El half-carry (H) no necesita instrucciones SET o CLEAR porque este bit del
cdigo convencional de condicin se usa solamente en la instruccin DAA para ajustar el
resultado de una suma o resta BCD. Dado que el bit (H) no se usa como un TEST
condicin (condicin de prueba) para cualquier ramificacin no seria til ser capaz de fijar
o limpiar este bit.
Para los bits N y Z podemos utilizar ciertas instrucciones para manipularlos. Una
instruccin de borrar acumulador tal como el CLRB borra el (N) y poe a 1 a (Z). La
instruccin de carga, LDAA #$80, causa que (N) se fije y (Z) se borre. Dado que hay
tantas instrucciones simples que pueden fijar o borrar (N) y (Z), no es necesario tener
instrucciones set y clear (instrucciones para fijar y borrar) para (N) y (Z) en este grupo.
34
MINED 11
Indice
4.34.1.- Branches
Estas instrucciones permiten al CPU hacer decisiones basadas en los contenidos de
los bits del cdigo de condicion. Todos los bloques de decisin en un diagrama de flujo
correspondern a una de las Instrucciones BRANCHES condicionales resumidas en la
tabla siguiente.
Funcin
Branch if Carry Clear
Branch if carry set
Branch if Equal Zero
Branch if Greater Than or Equal
Branch if Greater Than
Branch if Higher
Branch if Hgher or Same (same as BBC)
Branch if Less Than or Equal
Branch if Lower (same as BCS)
Branch if Lower or Same
Branch if Less Than
Branch if Minus
Branch if Not Equal
Branch if Plus
Branch if Bits(s) Clear in Memory Byte
Branch Never
Branch if Bit(s) Set in Memory Byte
Branch if Overflow Clear
Branch if Overflow Set
Mnemnico
BCC
BCS
BEQ
BGE
BGT
BHI
BHS
BLE
BLO
BLS
BLT
BMI
BNE
BPL
BRCLR
BRN
BRSET
BVC
BVS
REL
X
DIR
X
INDX
X
INDY
X
X
X
X
Comments
C=0?
C=1?
Z=1?
Signed >=
Signe >
Unsigned =
Unsigned >=
Signed <=
Unsigned <
Unsignedd <=
Signe <
N=1?
Z=0?
N=0?
Bit Manipualtor
3-cycle NOP
Bit Manipulation
V=0?
V=1?
TINBUK2 unsigned>
Indice 35
4.3.4.2.- Jumps.
La instruccin JUMP permite pasar el control de ejecucin a cualquier direccin en
el mapa de la memoria de 64kb.
Funcin
Jump
Mnemnico
JMP
DIR
X
EXT
X
INDX
X
INDY
X
INH
Mnemnico
BSR
JSR
RTS
REL
X
DIR
EXT
INDX
INDV
INH
Mnemnico
RTI
SWI
WAI
INH
X
X
X
MINED 11
Indice
interrupcin.
La reduccin de tiempo se logra al adelantar el
tiemporequerido para guardar los registros del CPU en la pila. Cuando la
interrupcin finalmente ocurre, el CPU esta listo para traer el vector
apropiado de modo que la demora asociada con el registro de la pila se
elimina.
4.3.4.5
Miscelaneas (Varios)
(NOP, STOP, TEST) NOP puede ser usado para introducir un pequeo tiempo de
demora en el flujo de un programa, es usualmente til el reunir el requerimiento de tiempo
de los perifricos lentos. Al incorporar instrucciones NOP en los LOOPS se producen
retardos mas largos.
Functions
No Operation (2-cycle delay)
Stop Clocks
Test
Mnemnico
NOP
STOP
TEST
INH
X
X
X
MINED 11
Indice 37
MINED 11
Indice
stack en la entrada del modulo (aislante del modulo), mas dos BYTES de la
direccin de retorno (por la instruccin BSR o JSR) y mas el desplazamiento
de los parmetros al momento de llamar al modulo. Este valor puede ser
calculado a mano, dibujando un mapa del stack y determinando el
desplazamiento de las variables en el modulo.
Las respuestas del modulo reemplazan a los parmetros dados, ya sea en los
registros del microprocesador o en el stack. Si se van a regresar en el stack una mayor
cantidad de parmetros que los que se alimentaron, debe hacerse espacio para ellos en la
rutina llamadora antes de brincar al modulo, (p. ej. si se necesitan 4 BYTES extra para
respuestas se hace con PSHX , PSHX antes de llamar al modulo).
MINED 11
Indice 39
CALCULO DE OFFSET.
PUNTOS DE PRUEBA O DE RUPTURA (BREAK POINT).
MOVIMIENTO DE BLOQUES DE MEMORIA.
VERIFICACION POR COMPARACION DE BLOQUES DE MEMORIA.
TRAZA (TRACE. Seguimiento del programa instruccin por instruccin.).
40
MINED 11
Indice
MINED 11
Indice 41
NOMBRE
BAUDS
CORRER
DESENSAMBLAR
EXAMINAR
FUNCION
FUNC. BLOQUE
FECHA (DATE)
HORA (TIME)
LEER
MOV. MEMORIA
OPERACION
REGISTROS
PROGRMAR
SUSTITUIR
TRAZA
VERIFICAR
DESCRIPCION
Determina la velocidad de comunicacin.
Transfiere el control del programa a la direccin dada.
Acepta un punto de prueba (Break point).
Desensambla a partir de la direccin dada. Si se da la
direccin de fin muestra un bloque de memoria.
Examinar Bloque de 16 memorias.
Define funciones del usuario.
Ejecuta funciones del usuario.
Llena el bloque con el dato dado.
Muestra la fecha del Real Time Clock.
Muestra la hora del Real Time Clock.
Carga Bytes consecutivos a partir de dir. Usese luego F3 y
nom .ASC para bajar datos de archivo ASCII.
Copia un bloque de memoria.
Operaciones fundamentales en Hexadecimal
muestra el contenido de los registros del microcontrolador.
Permite programar la OTPROM del HC11 un bloque de
datos o de uno en uno.
Examinar o sustituir en Memoria.
Examinar o sustituir en Registro
r = A, B, CC, D, X, Y, S, PC
Ejecuta un programa instruccin por instruccin en la
direccin dada por el contador de programa.
Compara bloques de memoria y reporta discrepancias.
COMANDO
B Baud-Rate
C {Dir}{/P.prueba}
D {Dir}{Dir fin}
E {Dir}{Dir fin}
FX = {Dir Subrutina}
FX {param1}...
FB Inicio, Fin, Dato
KD {dd/mm/aa}
KT {Hora}{hh : mm}
L {Dir}
M Inicio, Fin, Destino
O Dato {+ - * /} Dato
R
P
Inic, fin, dest
PM dir-dest.
SM {Dir}
Sr
T {Cantidad Inst.}
V Inicio, Fin, Destino
4.6.2 AUTOEJECUCION
Una vez que se termina el desarrollo de una aplicacin es comn dejarla en
CONTROL del MPU11. Para que el programa se ejecute automticamente (sin necesidad
de correrlo desde el teclado) el SM11 examina la primer localidad de la EEPROM ($B600)
y si encuentra una instruccin JMP ($7E) brinca a esa localidad sin entrar al interprete de
comandos del Monitor. De esta forma cada que se presione el RESET, o se encienda el
sistema, automticamente se ejecutar la rutina grabada o indicada en EEPROM.
Si el programa de aplicacin tiene un final (como subrutina) entonces retorna al
SM11. Si no tuviera final y se desea entrar en el SM11 entonces oprima alguna tecla
(ENTER o ESPACIO) y djese presionada al mismo tiempo de dar un RESET. Este
procedimiento evita que se realice la autoejecucion.
42
MINED 11
Indice
;Interrupcin de software
;Clave de rutina de servicio.
Las rutinas de servicio que trabajan con parmetros ya sea de entrada o de salida lo
hacen a travs de los registros del CPU. Los registros que no se usen para transferencia de
parmetros son transparentes sobre el llamado de las rutinas "SWI". Esto significa que una
vez terminada la rutina de servicio todos los registros tendrn los mismos valores que antes
de llamar a la rutina, excepto aquellos registros en los que se encuentra alguna respuesta
del servicio. Por ejemplo para recibir informacin de la PC en un programa cclico se
realiza as:
SWI
DB
2AH
;Interrupcin de software
;Cdigo de rutina TECLIN (Input tecla)
Al retornar de esta rutina en "B" estar el cdigo ASCII del carcter enviado de la
PC (00 si no se recibi carcter). Si esta instruccin esta intercalada en un ciclo, entonces
se puede tomar la decisin de salir del ciclo cuando se presione la tecla esperada.
MINED 11
Indice 43
CODIGO
NOMBRE
00
OUT
01
02
03
04
SWI1
BS
RETORNOC
ECHO
05
VIDEO
06
07
08
09
0A
0B
CLS
MSGE
ALFA
ERROR
DIV
RETARDO
TECLA
0C
0D
0E
0F
10
DISPB
REGB
IXDISP
ESPACIO
MXDISP
11
BLANK
12
DATO2
13
CHEX
14
DATO4
15
STATER
DESCRIPCION
Enva el carcter contenido en B al vdeo. Si es un retorno de carro ($0D) se
transmite adems un avece de lnea ($0A)
Entrada al SM11 despus de correr un programa de aplicacin
Enva un Back Space (08H) al vdeo usando, la rutina OUT.
Enva un retorno de carro <RET> a vdeo.
Espera la activacin de una tecla, la muestra en vdeo (ECO) y entrega su valor
ASCII en B
Enva un carcter contenido en B al vdeo (Puerto Serial) sin agregar LF al
CR.
Borra la pantalla de vdeo enviando un Form-Feed (0CH).
Manda al vdeo la serie de caracteres que inician en la direccin contenida en
Y y que termina con un ETX (03 Fin de Texto o CTRL-C).
Enva un CTRL-G (07) para emitir un tono audible.
Divisin: D = D / X y residuo en X.
Realiza un retardo de 1 mS por cada unidad contenida en el registro X.
Espera la activacin de una tecla para poner su valor ASCII en el acumulador
B sin eco.
Escribe el numero Hexadecimal escrito en B (0 a F).
Muestra en hexadecimal el contenido de B (00 a FF).
Muestra en Hexadecimal el contenido de X (0000 a FFFF).
Enva un espacio (20H) al vdeo.
Muestra en Hexadecimal el contenido de X y el contenido de la localidad de
memoria correspondiente.
Utilizando a Y como apuntador de una serie de caracteres ASCII, este se
posciciona en el primer carcter distinto de espacio o coma (se usa despus de la
rutina lnea).
Recoge una pareja de nmeros Hexadecimales de una lnea y los pone en B.
Para entrar, en B debe de estar en ASCII el primer dgito y Y debe de apuntar
al segundo.
Convierte el dato ASCII contenido en B a Hexadecimal en cuyo caso sale C=0.
Si el numero no es Hexadecimal sale C=1.
Recoge una serie de uno a cuatro nmeros Hexadecimales y los entrega en X.
Para entrar, en B debe de estar el primer dgito y Y debe de apuntar al
segundo.
Esta rutina maneja los mensajes de error del sistema. En "B"
debe darse el cdigo de mensaje de error, a saber:
1- ? MAL COMANDO
2- PARAM. ILEGALES
3- DATOS ILEGALES
4- MEMORIA INOPERANTE
5- SOBREFLUJO
16
44
DATOMEM
MINED 11
Indice
CODIGO
NOMBRE
18
BLANKD4
19
1A
MUL16
AJUSTE
1B
ADJDIA
1C
ADJDATE
1D
1F
DECIDISP
DATE
20
21
DESPDISP
TIME
28
29
2A
DASCIID
HEXASC
TECLIN
2B
2C
2D
TAB
LINEA
USRSWI1
2E
2F
35
36
37
40
USRSWI2
USRSWI3
HEXBCD
BCDISP
BCDESP
CAPTUR
MINED 11
DESCRIPCION
Recoge una serie de uno a cuatro dgitos Hex. y los pone en X. Al entrar, Y
debe estar al inicio o antes de la serie de datos.
Multiplica "X" por "D" dando el resultado en "X:D"
Si existe RTC ajusta horas y minutos. Recibe en "A" las horas y en "B" mins
(BCD). Segundos y centesimas se ponen a ceros.
Ajusta da de la semana y del mes del RTC. En "A" se debe dar el da de la
semana (1=lunes) y en "B" el da del mes en BCD.
Ajusta el mes y el ao del RTC. Recibe en "A" la terminacin del ao (00-99) y
en "B" el mes en BCD.
Muestra en decimal el contenido de "D" en el mnimo espacio.
Entrega en "B:X" la hora del RTC. En "B" las horas en "X" min. y segundos y
en "A" el da de la semana (1=lunes) todo en BCD
Muestra "D" en decimal en una rea fija de 5 espacios.
Entrega en B:X la hora del RTC. En B la hora en X los min. Y segundos
y en A el da de la semana (1=lunes) todo en BCD.
Muestra los dos caracteres ASCII en D. 1ro. A y luego B.
Convierte el dgito menos significativo de B de Hex a ASCII
Pone en B la tecla activada en ese momento. Si no existe activacin de tecla
B regresa en ceros.
Avanza el cursor de vdeo al siguiente Tab.
Editor de lnea. Al salir Y apunta a la cadena editada.
Ejecuta la rutina de usuario cuya direccin este grabada en las localidades
$130:$131 del rea de RAM.
Ejecuta la rutina de usuario grabada en las localidades $132:$133
Ejecuta la rutina de usuario grabada en las localidades $134:$135
Convierte X de Hex a BCD y lo entrega en B:X
Muestra el contenido de B:X en el espacio mnimo (no ceros)
Muestra B:X sin ceros a la izquierda en 6 espacios fijos.
Se usa despus de Sbr lnea (Cdigo 2C) para analizar y cargar en registros los
parmetros dados en la edicin de la lnea.
-1er Parmetro en X.
-2do Parmetro en ( S ). (En Stak).
-3er Parmetro en Y.
Indice 45
CAPITULO V
5.1 PUERTOS DEL MC68HC11
5.1.1 ENTRADAS Y SALIDAS EN PARALELO
El MC68HC11 tiene un total de 40 puntos de
Entrada/Salida (E/S). Estas lneas pueden usarse como lneas
E/S digitales de propsito general o para al menos una
funcin perifrica especial. En los siguientes prrafos se
explicara el uso de estas lneas como E/S de propsito general.
El manejo de los puertos para propsito general se realiza a travs de las primeras
localidades del bloque de registros de puertos como se muestra en la figura 5.1. Los
registros se muestran en orden de direcciones por ser significativo en caso de accesos en 16
bits. Los bits indicados en "0" son bits no implementados que siempre leen ceros.
Como puede apreciarse las direcciones de manejo de los puertos son $1000 (PA),
$1004 (PB), $1003 (PC), $1008 (PD) y $100A (PE).
$1000
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
$1002
STAF
STAI
CWOM
HNDS
OIN
PLS
EGA
INVB
$1003
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
PORTC
$1004
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
PORTB
$1005
PCL7
PCL6
PCL5
PCL4
PCL3
PCL2
PCL1
PCL0
PORTCL
$1007
DDC7
DDC6
DDC5
DDC4
DDC3
DDC2
DDC1
DDC0
DDRC
$1008
PD5
PD4
PD3
PD2
PD1
PD0
PORTD
$1009
DDD5
DDD4
DDD3
DDD2
DDD1
DDD0
DDRD
$100A
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
PORTE
$1026
DDRA7
PAEN
PAMOD
PEDGE
DDRA3
I4/O5
RTR1
RTR0
PACTL
$1028
SPIE
SPE
DOWN
MSTR
CPOL
CPHA
SPR1
SPRO
SPCR
PORTA
PIOC
68HC11
PAI
7 6 5 4 3 2 1 0
Temporizador
programable
Puerto A
(1000)
OC1
OC2
OC3
OC4
IC4/OC5
IC1
IC2
IC3
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
DDRA3
DDRA7
48
MINED 11
Indice
PUERTO B
(1004)
PB7
PB6
PB5
PB4
PB3
68HC11
PB2
PB1
PB0
STRB
7 6 5 4 3 2 1 0
Registro de control de
Entrada/Sallida PIOC = 1002H
STROBE
0 - Pulso activo en 0
1 - pulso activo en 1
HANDSHAKE
0 - MODO SIMPLE
49
Indice
luego PORTCL). Cuando el bit STAF se pone a "1" por accin del STRA se
puede provocar una interrupcin si el bit 6 de PIOC (STAI) esta en "1". Este
bit esta normalmente en "0" por accin del RESET.
68HC11
PORTCL
(1005)
PUERTO C
(1003)
LATCH
PUERTO
C
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
CLK
STRA
7 6 5 4 3 2 1 0
Registro de direccion de
datos del puerto C DDRC = 1007H
0 - BIT del puerto c es ENTRADA
1 - BIT del puerto c es SALIDA
7 6 5 4 3 2 1 0
Registro de control de
Entrada/Salida PIOC = 1002H
EDGE STROBE
0 - TRANSICION NEGATIVA
1 - TRANSICION POSITIVA
HNDS
0 - MODO SIMPLE
CWOM
STAI
0 - INTERRRUPCION DESHABILITADA
1 - GENERA INTERRUPCIO SI STAF = 1
STAF
El bit 5 de PIOC (CWOM, portC Wire-Or Mode) trabaja sobre las lneas del
puerto C que se programen como salidas. RESET pone a cero este bit dejndolo en modo
CMOS (entrega ceros y unos). Si se programa a "1" a CWOM entonces las salidas de C
quedaran en drenador abierto (solo establece ceros).
50
MINED 11
Indice
68HC11
PORTCL
(1005)
PUERTO C
(1003)
LATCH
PUERTO
C
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
CLK
STRA
STRB
7 6 5 4 3 2 1 0
1 1 1 1 1 1 1 1
7 6 5 4 3 2 1 0
0 1 1 1 0 0
Registro de direccion de
datos del puerto C DDRC = 1007H
Puestos a 1s para salidas
Registro de control de
Entrada/Salida PIOC = 1002H
INVERT STRB
0 - TRANSICION NEGATIVA
EDGE STRA
PLS
= 1OIN = 1 -
1 - TRANSICION POSITIVA
RESPUESTA DE STRB EN PULSO
MODO HANDSHAKE SALIDA
HNDS =
MODO COMPUESTO
0-
CWOM
STAI
0 - INTERRRUPCION DESHABILITADA
1 - GENERA INTERRUPCIO SI STAF = 1
STAF
51
Indice
Como puede verse el registro PORTCL ($1005) es para el manejo del puerto
C con protocolo de comunicacin. Cualquier escritura o lectura del registro PORTC
($1003) es para el manejo digital de las lneas del Puerto C y no tiene ninguna
influencia sobre las lneas de control STRA y STRB.
En la figura 6.6 se da otro ejemplo del Puerto C ahora en protocolo de entrada. Este ejemplo
esta ajustado como si fuera la recepcin de una impresora (protocolo centronics). En este caso se
inicializa STRA transicin negativa, STRB en nivel activo cero (no pulso como el ejemplo anterior).
La operacin inicia cuando de un dispositivo externo se entregan datos al puerto C y se da un
pulso (o transicin) a STRA. Esta seal provoca que STRB retroalimente con un nivel lgico "1"
indicando que esta en proceso de leer dicha informacin (BUSY). La transicin en STRA tambin
hace que PORTCL tenga disponible el dato recibido y que se "ponga" la bandera STAF. Si el bit STAI
lo autoriza, tambin se genera una interrupcin.
El CPU debe entonces leer el registro PIOC para darse cuenta que tiene datos validos
(STAF=1) y leer luego PORTCL para cargar el dato. Esta secuencia hace que se "limpie" STAF y que
STRB regrese a cero (nivel activo programado en bit 0 de PIOC) indicndole al dispositivo transmisor
que se esta disponible para recibir mas informacin. Adicionalmente si se tiene habilitada la
interrupcin (bit 6) desaparece el origen de la misma.
68HC11
PORTCL
(1005)
PUERTO C
(1003)
LATCH
PUERTO
C
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
CLK
STRA
STRB
7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0
7 6 5 4 3 2 1 0
0 1 1 1 0 0
Registro de direccion de
datos del puerto C DDRC = 1007H
Puestos a 0s para entradas
Registro de control de
Entrada/Salida PIOC = 1002H
INVERT STRB
EDGE STRA
PLS
= 0 -
0 - TRANSICION NEGATIVA
1 - TRANSICION POSITIVA
RESPUESTA DE STRB EN NIVEL
OIN =
HNDS =
0 0 -
CWOM
STAI
0 - INTERRRUPCION DESHABILITADA
1 - GENERA INTERRUPCIO SI STAF = 1
STAF
52
MINED 11
Indice
SPI
/SS
SCK
MOSI
MOSO
PD5
PD4
PD3
PD2
SCI
TXD
RXD
PD1
PD0
68HC11
7 6 5 4 3 2 1 0
Registro de direccion de
datos del puerto D DDRD = 1009H
0 - BIT DEL PUERTO D ES ENTRADA
1 - BIT DEL PUERTO D ES SALIDA
68HC11
CONVERTIDOR
A/D
Puerto E
(100A)
AN7
AN6
AN5
AN4
AN3
AN2
AN1
AN0
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
MINED 11
53
Indice
54
MINED 11
Indice
J5
J6
HC11
HC11
J7
MINED 11
55
Indice
GND
J6
MODO
J6 = MODB
J5 = MODA
SINGLE-CHIP
EXPANDED
BOOTSTRAP
SPECIAL TEST
+5
+5
GND
GND
GND
+5
GND
+5
MINED 11
Indice
8Kbytes
USUARIO
AFFF
D000
OTPROM DEL
D7FF
D800
MEMORIA
2Kbytes USUARIO
SM11
MC68HC711E20
FF00
FFFF
VECTORES
MINED 11
57
Indice
DIRECCION
239
236
23C
240
243
246
249
24C
250
253
256
259
25C
260
263
266
SM11
SM11
269
26C
SM11
Esta tabla nos da la direccin de ejecucin de cada una de las rutinas especificadas.
Para su uso correcto en tal direccin debe grabarse un instruccin "JUMP" y la direccin
de la rutina de servicio (que estar en rea EEPROM u OTPROM). Por ejemplo si se
desea usar la seccin de INTERRUPCIONES PERIODICAS (interrupcin de tiempo
real) desde lenguaje ensamblador se inicializaria as:
INIT
....
....
LDAA
STAA
LDD
STD
LDAA
STAA
....
....
CLI
RTS
58
MINED 11
Indice
0000
304 BYTES
USUARIO
64 BYTES
PUNTOS DE ENTRADA DE
INTERRUPCIONES DEL
68HC11(USUARIO)
56 BYTES
40 BYTES
48 BYTES
022F
0230
026F
0270
02A7
02A8
02C7
02C8
02FF
MINED 11
59
Indice
EJEMPLO:
PROGRAMA:
ORG
LDAB
ANDB
LDAA
LSRA
LSRA
LSRA
LSRA
SWI
FCB
$B600
$00
#$0F
$00
(0000)
D
=
=
3F
030F
;Obtiene el dato
;Desaparece el nibble mas significativo
;Recarga el dato ahora en A.
;Desplaza el bit mas significativo
; a la posicin del menos
; significativo y limpia
; las otras posiciones
MINED 11
61
Indice
PROGRAMA:
a.
(0002) = C8
(0003) = FA
(0004) = 96
Resultado:
(0000) = 02
(0001) = 58
ORG
CLRA
LDAB
ADDB
ADCA
ADDB
ADCA
STD
SWI
FCB
$B600
$02
$03
#00
$04
#00
$00
62
MINED
Indice11
a.
Resultado:
PROGRAMA:
ORG
LDD
ADDD
STD
LDAA
ADCA
STAA
LDAA
ADCA
STAA
SWI
FCB
0000 = C3
0001 = A7
0002 = 5B
PRIMER SUMANDO
C3A75B16
0003 = B8
0004 = 35
0005 = DF
SEGUNDO SUMANDO
B835DF16
0006
0007
0008
0009
=
=
=
=
$B600
$01
$04
$08
$00
$03
$07
#00
#00
$06
01
7B
DD
3A
RESULTADO
17BDD3A16
MINED 11
Indice63
a.
0000 = 37
0001 = 89
0002 = 64
0003 = 56
Resultado: 0004 = 01
0005 = 02
0006 = 45
PROGRAMA:
ORG
CLRB
LDAA
ADDA
DAA
STAA
LDAA
ADCA
DAA
STAA
ADCB
STAB
SWI
FCB
$B600
$01
$03
$06
$00
$02
$05
#0
$04
64
MINED
Indice11
(8)
(9)
(BCD 11)
(BCD 17, que es el correcto)
MINED 11
Indice65
0003 = 00
0004 = 00
0005 = 0F
0005 es multiplicando
00000F es producto
EN DECIMAL: 3 * 5 = 15 .
B)
0000 = 64
0001 = 75
0002 = 30
Resultado:
0003 = 2D
0004 = C8
0005 = C0
7530 es multiplicando
2DC8C0 es producto
66
ORG
LDAA
LDAB
MUL
STD
LDAA
LDAB
MUL
ADDB
$B600
$00
$02
ADCA
STD
SWI
FCB
#0
$03
$04
$00
$01
$04
;Obtiene multiplicador
;Obtiene LSB's del multiplicando
;Multiplica los LSB's
;Guarda el producto parcial
;Obtiene multiplicador
;Obtiene el MSB's del multiplicando
;Multiplica MSB's
;Adiciona LSB's con MSB's del producto
;
parcial previo
;Adiciona el carry con MSB's
;Guarda la suma del producto parcial
MINED
Indice11
ARREGLOS MULTIDIMENCIONALES.
Otro uso comn de las multiplicaciones es la colocacin de elementos en
arreglos multidimencionales. Por ejemplo: Si tenemos un arreglo de lectura de sensor,
organizado por un numero de estaciones remotas y un numero de censores,
generalmente referimos la lectura del sensor 7 de la estacin numero 5 como R(5,7).
Donde R es el nombre de un arreglo total. El mtodo usual para almacenar este
arreglo es indicar la direccin R base con R (0,0) y continua R (0,1), R (0,2), etc. Si hay
tres estaciones (0, 1 y 2) y 4 sensores en cada estacin (0, 1, 2 y 3) tenemos la lectura en
la siguientes localidades de memoria:
LOCALIDADES DE MEMORIA
R base
R base
R base
R base
R base
R base
R base
R base
R base
R base
R base
R base
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
LECTURA
R (0,0)
R (0,1)
R (0,2)
R (0,3)
R (1,0)
R (1,1)
R (1,2)
R (1,3)
R (2,0)
R (2,1)
R (2,2)
R (2,3)
MINED 11
Indice67
68
mas
MINED
Indice11
(*PROBLEMAS CICLICOS)
(0000) = 02
(0001) = 58
C8 + FA + 96 = 0258
DIAGRAMA DE FLUJO:
INICIA
Sumu = 0
Sum1 = 0
Apuntador = 0003
Contador = (0002)
Sum1 = Sum1 + (Apuntador)
Sumu = Sumu + Carry
Apuntador = Apuntador +1
Cuenta
= Cuenta - 1
No
Cuenta = 0
Si
FIN
PROGRAMA:
OTRO
MINED 11
ORG
CLRA
CLRB
LDX
ADDB
ADCA
INX
DEC
BNE
STD
SWI
FCB
$B600
#03
,X
#00
$02
OTRO
$00
Indice69
count
pointer1
pointer2
carry
=
=
=
=
(0000)
0001
0011
0
pointer =
pointer1 + pointer2 + carry
+ DecimalCorrection
pointer1
pointer2
count
No
=
=
=
pointer1 +1
pointer2 +1
count -1
si
count = 0
?
Si
FIN
PROGRAMA:
SUMA
70
ORG
LDAB
LDX
LDY
CLC
LDAA
ADCA
DAA
STAA
INX
INY
DECB
BNE
SWI
FCB
$B600
$00
#$01
#$11
,X
,Y
,X
SUMA
MINED
Indice11
A)
(0000) = 0C
Resultado:
B)
(0000) = 06
Resultado:
PROGRAMA:
NUM
(0001) = 43 C
ORG
LDAA
CMPA
BLSNUM
ADDA
ADDA
STAA
SWI
FCB
(0001) = 36 6
$B600
$00
#9
;Si, NUM
#7
#$30
$01
;Elemento a convertir
;Es dato 9 o menor?
;No, Suma de ajuste para valores alfa
;Adicin para conversin a ASCII
;Almacenamiento de dato ASCII
MINED 11
Indice71
A)
(0000) = 02
(0001) = 09
Resultado:
B)
(0000) = 07
(0001) = 01
Resultado:
PROGRAMA:
ORG
LDAA
LDAB
MUL
ADDB
STAB
SWI
FCB
$B600
$00
#$10
$01
$02
La instruccin MUL realiza una multiplicacin sin signo de 8-bits por 8-bits con
los contenidos de los acumuladores A y B respectivamente. Dejando el resultado de 16
bits en el acumulador D (A en la parte mas alta).
En este caso, el resultado no puede ser mayor de 9016 , por lo tanto la parte baja
del acumulador D (que corresponde a B) es relevante.
72
MINED
Indice11
Dgito
0
1
2
3
4
5
6
7
8
9
7
0
EJEMPLO:
MINED 11
6
g
Cdigo
0011 1111 (3F)
0000 0110 (06)
0101 1011 (5B)
0100 1111 (4F)
0110 0110 (66)
0110 1101 (6D)
0111 1101 (7D)
0000 0111 (07)
0111 1111 (7F)
0110 1111 (6F)
5
f
4
e
A)
3
d
2
c
1
b
a
f
b
c
0
a
(0001)
03
Indice73
Resultado:
B)
Resultado:
(0002)
(0001)
28
(0002)
00
4F
HARDWARE:
220 x 7
HC11
PB0
PB1
PB2
PB3
PB4
PB5
PB6
a
b
c
d
e
f
g
CLCULOS:
Las resistencias se pueden calcular a partir de la malla de un segmento con la ley de
R
voltajes Kirchhoff:
VOH
VOH min = VR + VLED
PROGRAMA:
ORG
CLR
LDAB
CMPB
BHI
LDX
ABX
LDAA
STAA
FIN
TABLA
74
SWI
FCB
FCB
$B600
$1004
$01
#9
FIN
#TABLA
,X
$1004
1
; Retorno al sistema monitor
$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F
MINED
Indice11
MINED 11
Indice75
TxD
RxD
GND
HC11
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
D0
D1
D2
D3
D4
D5
D6
D7
IMPRESORA
STRB
STRA
GND
DS
AKN
GND
D0 D7
DS
Datos vlidos
De computadora a impresora
BUSY
AKN
De impresora a computadora
INICIO
IMPRIME
X $1000
X $1000
A $1C
(5, X) B
($1002) A
X Cadena
B (0, X)
IMPRIME
Si
(2, X) $80 = 0?
No
X
RTS
XX+1
Si
X < FinCad ?
No
ECHO
IMPRIME
MINED 11
Indice77
PROGRAMA:
ORG
LDX
BSET
LDAA
STAA
LDX
OtraVez
LDAB
BSR
INX
CPX
BLO
Infinito
SWI
FCB
BSR
BRA
IMPRIME PSHX
LDX
STAB
$B600
#$1000
7,X $FF
#%00011100
$1002
#Cadena
0,X
IMPRIME
Interroga
BRCLR
PULX
RTS
FCC
FCB
Hola Mundo
$0D,$0A
Cadena
FinCad
#FinCad
OtraVez
$04
IMPRIME
Infinito
#$1000
5,X
Si se esta usando una impresora laser, al finalizar la escritura de caracteres se debe enviar un Form Feed (ALT + 12) para que los
caracteres que se recibieron sean impresos, de lo contrario, la informacin quedar almacenada en el buffer de la impresora en espera de
un FF.
78
MINED
Indice11
1. 2N2
PC3
PC2
PC1
HC11
PC0
C1 C2
Rc x 7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
R1
Filas = ctodos,
Columnas = nodos
Indice79
$0100
$0101
$0102
$0103
$0104
80
MINED
Indice11
CLCULOS:
Clculo de las resistencias Rc y Rb:
+Vcc
Rb
VOLPCx
Rc x 7
VOLPB0
VOLPB1
VOLPB2
VOLPB3
VOLPB4
VOLPB5
VOLPB6
Como se puede apreciar, el peor de los casos ocurre cuando todos las filas de una
columna x estn prendidas, en este caso, el transistor (en estado de saturacin)
debe ser capaz de poder suministrar suficiente corriente para todos los LEDs de esa
columna.
Datos:
VCC = 5V
VOL Pxx = 0.4V (max)
VLED 1.5V
ILED 11mA
VCEsat 0.3V
200
El voltaje en el colector es de:
VC = VCC VCEsat = ( 5 0.3)V = 4.7V
y la malla de cada LED tiene la ecuacin:
VC VOL PBx = VLED + VRc
I LED
11mA
Por otro lado:
I C = 7 I LED = 7 (11mA) = 77mA
MINED 11
= 254.54RC = 270
Indice81
IC
I C 77mA
IB =
=
= 385 A
IB
200
Malla de entrada:
VCC VOL PCx = VBE + VRb
=
(5 0.4 0.7 ) V
385 A
= 10.129K Rb = 10K
82
MINED
Indice11
DIAGRAMAS DE FLUJO:
INIT
INICIO
(GenChar+$[52-20]*5+0) $7F
(GenChar+$[52-20]*5+1) $09
(GenChar+$[52-20]*5+2) $19
(GenChar+$[52-20]*5+3) $29
(GenChar+$[52-20]*5+4) $46
INIT
X $1000
(7, X) (7, X) + $1F
B $1E
(3, X) B
(APUNT) 00
B $20
TECLA
CharASCII
B = $18 ?
No
CharASCII
Si
B $7E
($0260) B
D RTIRQ
($0261) D
FIN
MINED 11
Indice83
CharASCII
RTIRQ
B $40
($1025) B
C1
B B - $20
ROL $1003
SS+1
B (APUNT)
N=1?
Si
SS+1
BB+1
XD
No
B > $3A ?
No
A5
Si
D (0, X)
($00:$01) D
4?
No
B 00
D (2, X)
DAxB
A $1E
($02:$03) D
($1003) A
B (4, X)
A
($04) B
XS+1
D GenChar
D D + (0, X)
(APUNT) B
A 00
A
XD
B
B (0, X)
X
B B
RTS
($1004) B
84
RTIMINED
Indice11
Si
PROGRAMA:
C3
C5
APUNT
GenChar
MINED 11
EQU
$00
EQU
EQU
EQU
ORG
RMB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
$02
$04
$05
$0000
6
$00, $00, $00, $00, $00
$00, $00, $4F, $00, $00
$00, $07, $00, $07, $00
$14, $7F, $14, $7F, $14
$24, $2A, $7F, $2A, $12
$23, $13, $08, $64, $62
$36, $49, $55, $22, $50
$00, $05, $03, $00, $00
$00, $1C, $22, $41, $00
$00, $41, $22, $1C, $00
$14, $08, $3E, $08, $14
$08, $08, $3E, $08, $08
$00, $50, $30, $00, $00
$08, $08, $08, $08, $08
$00, $00, $60, $60, $00
$20, $10, $08, $04, $02
$3E, $51, $49, $45, $3E
$00, $42, $7F, $40, $00
$42, $61, $51, $49, $46
$21, $41, $45, $4B, $31
$18, $14, $12, $7F, $10
$27, $45, $45, $45, $39
$3C, $4A, $49, $49, $30
$01, $71, $09, $05, $03
$36, $49, $49, $49, $36
$06, $49, $49, $29, $1E
$00, $36, $36, $00, $00
$00, $56, $36, $00, $00
$08, $14, $22, $41, $00
$14, $14, $14, $14, $14
$00, $41, $22, $14, $08
$02, $01, $51, $09, $06
$32, $49, $79, $41, $3E
$7E, $11, $11, $11, $7E
$7F, $49, $49, $49, $36
$3E, $41, $41, $41, $22
$7F, $41, $41, $22, $1C
$7F, $49, $49, $49, $41
$7F, $09, $09, $09, $01
$3E, $41, $49, $49, $7A
Indice85
OtraVez
Fin
INIT
86
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
;H
;I
;J
;K
;L
;M
;N
;O
;P
;Q
;R
;S
;T
;U
;V
;W
;X
;Y
;Z
ORG
BSR
SWI
FCB
CMPB
BEQ
BSR
$B600
INIT
BRA
SWI
FCB
OtraVez
;Programa en EEPROM
;Inicializacin de la R.T.I.
;Llamada a rutina de servicio $0B
;TECLA (B Tecla pulsada)
;Compara con ESC
;Si se puls el ESC, salir...
;Recibe ASCII en B, convierte a 5x7 y actualiza
globales
;Se repite
LDX
BSET
LDAB
STAB
CLR
LDAB
BSR
LDAB
STAB
LDD
STD
BSET
CLI
RTS
#$1000
7,X $1F
#$1E
3,X
APUNT
#$20
CharASCII
#$7E
$260
#RTIRQ
$261
$24,X $40
$0B
#$18
Fin
CharASCII
MINED
Indice11
CharASCII
PSHX
PSHB
PSHA
SUBB
BMI
CMPB
BGT
LDAA
MUL
PSHB
PSHA
TSX
LDD
ADDD
INS
INS
XGDX
LDD
STD
LDD
STD
LDAB
STAB
NoComputa PULA
PULB
PULX
RTS
RTIRQ
LDAB
STAB
SEC
ROL
LDAB
INCB
CMPB
BLS
CLRB
LDAA
STAA
NoTope
STAB
CLRA
XGDX
LDAB
COMB
STAB
RTI
MINED 11
#GenChar
0,X
0,X
C1
2,X
C3
4,X
C5
#$40
$1025
$1003
APUNT
#4
NoTope
#$1E
$1003
APUNT
0,X
$1004
Indice87
88
MINED
Indice11
PE0
PA6
MINED 11
Indice89
CLCULOS:
En el siguiente grfico se esboza la generacin de una salida por
comparacin basndose en un sumando:
500ns
por Toggle
PA6
T
Sumando (en ciclos E)
TOC2ant
255
2
No se necesita modificar el prescaler que queda por RESET, ya que es el mejor (entre ms ciclos se usen y de
periodos mas cortos, mayor precisin) y por otro lado, s se alcanza a conseguir los nmeros de ciclos
necesarios para ambos rangos de frecuencia con ese prescaler.
90
MINED
Indice11
DIAGRAMAS DE FLUJO:
INICIO
INIT
Autoejecucin
INIT
B ADR1
A 60
DAxB
X 17
XD/X
DX
D D + 100
($00:$01) D
OC2RQ
B $7E
B $40
($0250) B
($1023) B
X OC2RQ
D ($00:$01)
($0251, 52) X
D D+(TOC2)
X $1000
(TOC2) D
($39,X)
($39, X)+$80
RTI
B $20
($30, X) B
($20,X)
($20, X)+$40
($23,X)
($23, X) $BF
($22,X)
($22, X)+$40
I0
RTS
MINED 11
Indice91
PROGRAMA:
Sumando EQU
ORG
JMP
AutoRun BSR
Infinito
LDAB
LDAA
MUL
LDX
IDIV (41)
XGDX
ADDD
STD
BRA
INIT
LDAB
STAB
LDX
OC2RQ
STX
LDX
BSET
LDAB
STAB
BSET
BCLR
BSET
CLI
RTS
LDAB
STAB
LDD
ADDD
STD
RTI
$00
$B600
AutoRun
INIT
$1031
#60
#17
#100
Sumando
Infinito
#$7E
$0250
#OC2RQ
$0251
#$1000
$39,X $80
#$20
$30,X
$20,X $40
$23,X $BF
$22,X $40
(2)
(4)
(4)
(6)
(5)
#$40
$1023
Sumando
$1018
$1018
;Resultado de divisin en D
;Actualiza var. global
;Se repite indefinidamente
;Cd. op. de instruccin JMP
;para redireccionar vector de OC2 a nuestra rutina
;Dir. de servicio de rutina asignada por
ensamblador
;Completa instruccin JMP OC2RQ en RAM
;Inicio block de registros
;Enciende convertidor A/D
;Para muestreo continuo del canal AD0
;Configura e inicia las conversiones
;Configura modo TOGGLE en OC2 nicamente
;Limpia alguna interrupcin pendiente de OC2
;Habilita interrupcin para OC2
;Habilita interrupciones internas (subsistemas)
;Para eliminar slo la fuente de interrupcin OC2
;Consulta retardo ponderado actual
;Suma con valor de comparacin anterior en TOC2
;Actualiza valor de siguiente comparacin
Obsrvese que en el peor de los casos en que la comparacin sea vlida justo en
el primer ciclo de la instruccin IDIV (acaparando el control del CPU) y que el retardo
de tiempo ponderado sea en ese momento de 100 ciclos E, consumimos:
40 (restante de IDIV) + 14 (aceptacin de intr.) + 3 (JMP en el vector de intr.) + 3 (JMP hacia
nuestra rutina) + 2 (LDAB inm) + 4 (STAB ext) + 4 (LDD dir) + 6 (ADDD ext) + 5 (STD ext)
= 81
ciclos E, lo que nos da tiempo suficiente para alcanzar a actualizar el registro TOC2
antes de que el contador maestro nos alcance.
92
MINED
Indice11
+5V
TxD
RxD
GND
HC11
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
STRB
PA7
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
E
RS
R/W
Vcc
Vee
LCD
10 k
Vss
Para poder utilizar correctamente el mdulo LCD es necesario enviar los siguientes
parmetros de inicializacin:
1. $38: para configurar bus de datos de 8 lneas, 2 lneas en display y caracteres de
5x7.
2. $0F: para encender el display, el cursor, y mostrarlo parpadeando.
3. $01: para limpiar la pantalla.
4. $06: para incremento de cursor (movimiento a la derecha), sin desplazamiento de
display.
Obsrvese que se est utilizando la lnea STRB para generar el pulso de Enable
requerido por el LCD. Debe tener cuidado de que el LCD sea compatible con la seal
MINED 11
Indice93
$01
$02
$03
$40
$41
$42
$43
$04
M
$44
...
$0E
$0F
$3F
...
$4E
$4F
$7F
$80 $8F
$C0 $CF
94
MINED
Indice11
$7F
$BF
$80
$81
$82
$83
$C0
$C1
$C2
$C3
$84
$C4
$85
$86
$C5
$C6
$87
$88
$89
$8A
$8B
$8C
$8D
$8E
$8F
$90
$C7
$C8
$C9
$CA
$CB
$CC
$CD
$CE
$CF
$D0
BackSpace
(decremento)
deseado
$86
$8F
$CF
$86
$80
$C0
MINED 11
Indice95
LCD
CR ?
Si
Procesar
Retorno
Si
Regresar
Cursor
Si
Borrar
Display
Si
Borrar Lnea
Procesar
Retorno
Si
Imprimir
Caracter
No
BS ?
No
FF ?
No
CAN ?
No
Caracter ?
No
RTS
96
MINED
Indice11
PROGRAMA:
Imagen
Infinito
Fin
INIT
OtroInit
InitParam
FinInit
RETARDO
Otro1
LCD
SiLin1
MINED 11
EQU
ORG
$00
$B600
LDX
BSR
BRCLR
LDAB
CMPB
BEQ
BSR
BRA
SWI
FCB
#$1000
INIT
$2E,X $20 Infinito
$2F,X
#27
Fin
LCD
Infinito
LDAA
STAA
BSET
BCLR
LDY
LDAA
STAA
BSR
INY
CPY
BLO
RTS
FCB
#$80
Imagen
$26,X $80
0,X $80
#InitParam
0,Y
4,X
RETARDO
#FinInit
OtroInit
$38, $0F, $01, $06
PSHX
#547
LDX
DEX
BNE
PULX
RTS
Otro1
PSHA
CMPB
BNE
LDAA
BRSET
LDAA
STAA
Indice97
NoCR
NoBS
NoFF
SiCANcel
OtroSP
NoCAN
Retornar
98
BRA
CMPB
BNE
DEC
BSET
BCLR
BSR
SiCANcel
#$08
NoBS
Imagen
Imagen %10000000
Imagen %00110000
ACTUALIZA
BSR
BSR
BRA
CMPB
BNE
BCLR
LDAA
STAA
BSR
BRA
CMPB
BNE
BCLR
BSR
ESPACIO
ACTUALIZA
Retornar
#$0C
NoFF
0,X $80
#$01
4,X
RETARDO
Retornar
#$18
NoCAN
Imagen %00001111
ACTUALIZA
LDAA
BSR
#16
ESPACIO
DECA
BNE
BSR
BRA
CMPB
BLO
BSET
STAB
OtroSP
ACTUALIZA
Retornar
#$20
Retornar
0,X $80
4,X
BSR
RETARDO
INC
Imagen
BRCLR Imagen $10
Retornar
LDAA Imagen
EORA #01010000B
STAA Imagen
BSR
ACTUALIZA
PULA
;y luego se borra...
;Es un BackSpace?
;Si no, sigue consultando qu es?
;Decrementa ciegamente la imagen y corrige...
;forzando a 1 el bit7 de imagen y...
;a 0's los bits 5 y 4
;Posiciona cursor fsicamente de acuerdo a
imagen
;Borra caracter enviando un espacio
;Reposiciona cursor
;Es un Form Feed (ALT+12)?
;Si no, sigue consultando qu es?
;RS = Instruction Input
;Cdigo de instruccin Clear Display
;Escribe dato al LCD (Enable automtico)
;Espera ejecucin de la instruccin
;Es un CANcel (ALT+24)?
;Si no, sigue consultando qu es?
;Imagen = 1er caracter, (cualquier lnea)
;Posiciona cursor fsicamente de acuerdo a
imagen
;Para mandar 16 espacios
;Escribe un espacio en posicin de cursor
actual
;Decrementa contador espacios mandados
;Reposiciona cursor al 1er caracter
;Es imprimible (ASCII > 31)?
;Si no, no lo imprime
;RS = Data Input
;Imprime el caracter recibido en B (Enable
auto.)
;40s min. para datos, retardo compatible
;Incrementa ciegamente la Imagen
;Si bit4 = 0, cursor sigui adentro (visible)
;Correccin de posicin cursor:
;Invierte bits 6 y 4
;Reposiciona cursor de acuerdo a Imagen
MINED
Indice11
RTS
ESPACIO
PSHA
BSET
LDAA
STAA
BSR
PULA
RTS
ACTUALIZA PSHA
BCLR
LDAA
STAA
JSR
PULA
RTS
0,X $80
#$20
4,X
RETARDO
0,X $80
Imagen
4,X
RETARDO
MINED 11
Indice99