|
|
Programador | Cartel Luminoso | Caja de Banco | |
CPU 6802 v2.0 | |||
Anuncios |
El Microprocesador MOTOROLA 6802
|
Introducción.- El microprocesador es el cerebro de un sistema computarizado es aquel que ejecuta las instrucciones que estarán almacenadas en este caso en una memoria ROM, o una memoria de este tipo, para ejecutar las instrucciones se valdrá de una memoria RAM en la cual procesara las denominadas variables de programa El microprocesador posee 40 pines tipo DIP y una memoria RAM interna de 128 bytes, posee cuatro tipos de interrupción |
DESCRIPCIÓN DE LOS PINES DEL 6802
Pin |
Nombre |
Descripción |
1 |
Vss |
gnd |
2 |
Halt |
En estado 1 (conectado a 5V) permite funcionar al µP ejecutando las instrucciones que lea de la ROM En estado 0 (conectado a GND) se detiene después de ejecutar la ultima instrucción que este realizando (µP inactivo), las líneas BA = 1 VMA = 0 R/W = Z Colocar a Vcc |
3 |
MR |
Sirve para conectarse a memoria de acceso mas lento, si MR = 1 la duración de la señal E es normal, pero si esta MR = 0 la señal E en su ciclo alto es mas alargado, ósea para la lectura de una memoria de velocidad de acceso mas lenta Colocar a Vcc Normal |
4 |
IRQ |
Petición de interrupción, interrumpe al µP el cual deja el programa que este ejecutando para ejecutar la rutina de interrupción Si IRQ = 1 no solicita interrupción Si IRQ = 0 solicita interrupción Conectar a Vcc con resistencia de 4.7k |
5 |
VMA |
Acceso valido de memoria VMA = 1 dirección valida habilita dispositivos de E/S (PIA ) VMA = 0 dirección no valida deshabilita dispositivos de E/S (PIA ) Conectar al PIA según sea su diseño a una de las entradas CSx |
6 |
NMI |
Interrupción no enmascarable Conectar a Vcc con resistencia de 4.7k |
7 |
BA |
Bus disponible indica que se están usando o no las líneas de dirección y de datos Si BA = 0 bus de datos y dirección ocupados Si BA = 1 Bus de dirección y datos disponibles No Conectar |
8 |
Vcc |
Alimentación 5V TTL |
9… |
A0–15 |
Bus de direcciones de 16 Bits Conectar a las direcciones de la memoria ROM y RAM y A0,A1 al PIA a RS0 RS1 respectivamente |
21 |
Vss |
Tierra Conectar a GND |
26 |
D0-D7 |
Bus de datos 8 bits Conectar al bus de datos de la RAM y ROM y el PIA |
34 |
R/W |
Línea de control de lectura escritura R/W = 1 es Lectura R/W = 0 Escritura Conectar a las líneas de R/W de la RAM ROM PIA |
35 |
V |
Stand By Alimentación de Emergencia Conectar a Vcc |
36 |
RE |
RAM Enable habilita la RAM interna del 6802 128 bytes Si RE = 1 Memoria interna Si RE = 0 Memoria Externa |
37 |
E |
Enable Habilitación sincroniza el sistema Conectar a E del PIA |
38 |
XTAL |
38 y 39 van conectados al cristal de 4MHZ |
40 |
Reset |
Reinicialaza todo el sistema |
SET DE INSTRUCCIONES DE MOTOROLA 68xx
Mnemonics |
Op |
HINZVC |
IEXD#R |
~ |
Description |
Notes |
ABA |
1B |
*-**** |
X |
2 |
Add accumulators |
A=A+B |
ADCA s |
B9 |
*-**** |
XXXX |
4 |
Add with Carry |
A=A+s+C |
ADCB s |
F9 |
*-**** |
XXXX |
4 |
Add with Carry |
B=B+s+C |
ADDA s |
BB |
*-**** |
XXXX |
4 |
Add |
A=A+s |
ADDB s |
FB |
*-**** |
XXXX |
4 |
Add |
B=B+s |
ANDA s |
B4 |
--**0- |
XXXX |
4 |
Logical AND |
A=A&s |
ANDB s |
F4 |
--**0- |
XXXX |
4 |
Logical AND |
B=B&s |
ASL d |
78 |
--**** |
XX |
6 |
Arithmetic Shift Left |
d=d*2 |
ASLA |
48 |
--**** |
X |
2 |
Arithmetic Shift Left |
A=A*2 |
ASLB |
58 |
--**** |
X |
2 |
Arithmetic Shift Left |
B=B*2 |
ASR d |
77 |
--**** |
XX |
6 |
Arithmetic Shift Right |
d=d/2 |
ASRA |
47 |
--**** |
X |
2 |
Arithmetic Shift Right |
A=A/2 |
ASRB |
57 |
--**** |
X |
2 |
Arithmetic Shift Right |
B=B/2 |
BCC a |
24 |
------ |
X |
4 |
Branch if Carry Clear |
If C=0 |
BCS a |
25 |
------ |
X |
4 |
Branch if Carry Set |
If C=1 |
BEQ a |
27 |
------ |
X |
4 |
Branch if Equal |
If Z=1 |
BGE a |
2C |
------ |
X |
4 |
Branch if Greater or Eq |
If NxV=0 |
BGT a |
2E |
------ |
X |
4 |
Branch if Greater Than |
If Zv{NxV}=0 |
BHI a |
22 |
------ |
X |
4 |
Branch if Higher |
If CvZ=0 |
BITA s |
B5 |
--**0- |
XXXX |
4 |
Bit Test |
A&s |
BITB s |
F5 |
--**0- |
XXXX |
4 |
Bit Test |
B&s |
BLE a |
2F |
------ |
X |
4 |
Branch if Less or Equal |
If Zv{NxV}=0 |
BLS a |
23 |
------ |
X |
4 |
Branch if Lower or Same |
If CvZ=1 |
BLT a |
2D |
------ |
X |
4 |
Branch if Less Than |
If NxV=1 |
BMI a |
2B |
------ |
X |
4 |
Branch if Minus |
If N=1 |
BNE a |
26 |
------ |
X |
4 |
Branch if Not Equal |
If Z=0 |
BPL a |
2A |
------ |
X |
4 |
Branch if Plus |
If N=0 |
BRA a |
20 |
------ |
X |
4 |
Branch Always |
PC=a |
BSR a |
8D |
------ |
X |
8 |
Branch to Subroutine |
-[S]=PC,PC,a |
BVC a |
28 |
------ |
X |
4 |
Branch if Overflow Clr |
If V=0 |
BVS a |
29 |
------ |
X |
4 |
Branch if Overflow Set |
If V=1 |
CBA |
11 |
--**** |
X |
2 |
Compare accumulators |
A-B |
CLC |
0C |
-----0 |
X |
2 |
Clear Carry |
C=0 |
CLI |
0E |
-0---- |
X |
2 |
Clear Interrupt Mask |
I=0 |
CLR d |
7F |
--0100 |
XX |
6 |
Clear |
d=0 |
CLRA |
4F |
--0100 |
X |
2 |
Clear accumulator |
A=0 |
CLRB |
5F |
--0100 |
X |
2 |
Clear accumulator |
B=0 |
CLV |
0A |
----0- |
X |
2 |
Clear Overflow |
V=0 |
CMPA s |
B1 |
--**** |
XXXX |
4 |
Compare |
A-s |
CMPB s |
F1 |
--**** |
XXXX |
4 |
Compare |
B-s |
COM d |
63 |
--**01 |
XX |
7 |
Complement |
d=~d |
COMA |
43 |
--**01 |
X |
2 |
Complement accumulator |
A=~A |
COMB |
53 |
--**01 |
X |
2 |
Complement accumulator |
B=~B |
CPX s |
BC |
--**** |
XXX* |
5 |
Compare Index Register |
X-s |
DAA |
19 |
--**** |
X |
2 |
Decimal Adjust Acc. |
A=BCD format |
DEC d |
7A |
--**?- |
XX |
6 |
Decrement |
d=d-1 |
DECA |
4A |
--**?- |
X |
2 |
Decrement accumulator |
A=A-1 |
DECB |
5A |
--**?- |
X |
2 |
Decrement accumulator |
B=B-1 |
DES |
34 |
------ |
X |
4 |
Decrement Stack Pointer |
S=S-1 |
DEX |
09 |
---*-- |
X |
4 |
Decrement Index Reg. |
X=X-1 |
EORA s |
B8 |
--**0- |
XXXX |
4 |
Logical Exclusive OR |
A=Axs |
EORB s |
F8 |
--**0- |
XXXX |
4 |
Logical Exclusive OR |
B=Bxs |
INC d |
7C |
--**?- |
XX |
6 |
Increment |
d=d+1 |
INCA |
4C |
--**?- |
X |
2 |
Increment accumulator |
A=A+1 |
INCB |
5C |
--**?- |
X |
2 |
Increment accumulator |
B=B+1 |
INS |
31 |
------ |
X |
4 |
Increment Stack Pointer |
S=S+1 |
INX |
08 |
---*-- |
X |
4 |
Increment Index Reg. |
X=X+1 |
JMP d |
7E |
------ |
XX |
3 |
Jump |
PC=d |
JSR d |
BD |
------ |
XX |
9 |
Jump to Subroutine |
-[S]=PC,PC=d |
LDAA s |
B6 |
--**0- |
XXXX |
4 |
Load Accumulator |
A=s |
LDAB s |
F6 |
--**0- |
XXXX |
4 |
Load Accumulator |
B=s |
LDS s |
BE |
--**0- |
XXX* |
5 |
Load Stack Pointer |
S=s |
LDX s |
FE |
--**0- |
XXX* |
5 |
Load Index Register |
X=s |
LSR d |
74 |
--0*** |
XX |
6 |
Logical Shift Right |
d=->{0,d,C} |
LSRA |
44 |
--0*** |
X |
2 |
Logical Shift Right |
A=->{0,A,C} |
LSRB |
54 |
--0*** |
X |
2 |
Logical Shift Right |
B=->{0,B,C} |
NEG d |
70 |
--**** |
XX |
6 |
Negate |
d=-d |
NEGA |
40 |
--**** |
X |
2 |
Negate accumulator |
A=-A |
NEGB |
50 |
--**** |
X |
2 |
Negate accumulator |
B=-B |
NOP |
01 |
------ |
X |
2 |
No Operation |
|
ORAA s |
BA |
--**0- |
XXXX |
4 |
Logical inclusive OR |
A=Avs |
ORAB s |
FA |
--**0- |
XXXX |
4 |
Logical inclusive OR |
B=Bvs |
PSHA |
36 |
------ |
X |
4 |
Push |
-[S]=A |
PSHB |
37 |
------ |
X |
4 |
Push |
-[S]=B |
PULA |
32 |
------ |
X |
4 |
Pull |
A=[S]+ |
PULB |
33 |
------ |
X |
4 |
Pull |
B=[S]+ |
TUTORIAL DEL TASM Y DEL SIMULADOR DEL 6802
El TASM es un ensamblador muy conocido que sirve en este caso para ensamblar el programa fuente que se muestra en los ejemplos posteriores y que puedes descargarlo de esta pagina, también usamos el simulador del 6802 un simulador para MS-DOS como el mismo TASM pero muy útil para realizar estos programas y proyectos
Ejercicio 1
1.- Crear un archivo de texto con el siguiente código: ;----------------------------------------------------- ; Programa: suma en forma inmediata
.org 100h
ldaa #8 ldab #2 aba staa 40h wai .end ;----------------------------------------------------- 2.- Guardarlo como uno.asm Luego compilarlo y ensamblarlo de la siguiente manera
aparecerá lo siguiente si no existen errores
Se habrán creado los siguientes archivos: uno.lst listado de errores / si los hubiera uno.obj listado en hexadecimal para el simulador
3.- Escoger el 6802.exe aparecerá lo siguiente
4.- Presionar F2 para cargar el programa.. y escribir el nombre del archivo.obj en este caso uno.obj y presionar enter
Notece que se an cargado los datos en la memoria de programa del simulador del siguiente modo.
5.- Para que el programa pueda correr correctamente debemos cambiar el valor del PC a 100 de la siguiente manera. . . Presionamos P aparecerá PC = 0000 * Escribiremos 100 y presionamos enter
Para que el programa corra paso a paso presionamos F7 Veremos las instrucción y su acción en el siguiente cuadro:
Aquí se muestran el contenido de los acumuladores ‘A’ ‘B’ el registro índice ‘X’ el Program Counter ‘PC’ el stack pila ‘S’ y la
Dirección Código Mnemónico 0100 86 LDAA# 08
Para ver los campos de memoria de otras direcciones bastara con presionar F6 aparecerá: EJ dirección 40
Aquí otras herramientas del simulador para modificar los acumuladores como los demás registros se obtiene presionando F1
Para salir del simulador presionamos F10 Otros ejercicios:
Seguir los pasos anteriores y guardar con el nombre de Dos.asm ;----------------------------------------------------- ; programa : suma en forma directa
.org 100h
ldaa 40h ldab 50h aba ; a<--a+b staa 60h wai .end ;-----------------------------------------------------
Seguir los pasos anteriores y guardar con el nombre de tres.asm
;----------------------------------------------------- ; programa : multiplicacion ;----------------------------------------------------- ; decripcion : Se multiplican las siguientes memorias ; M50 = M40 * M48 ; R = x * y ;-----------------------------------------------------
R .EQU 050h X .EQU 040h Y .EQU 048h
.org 100h inicio: clra ; A = 0 ldab Y ; B <- Y sumar: beq resultado ; B = 0 adda X ; a<- a + X bvs error ; overflow ???? decb ; b <- b - 1 bra sumar ; salto error: ldaa #80h ; A <- #80 resultado: staa R ; R <- A wai ; stop .end ;-----------------------------------------------------
Nota: las rutas para crear un archivo.asm en MS-DOS son las siguientes: Ir a MS DOS
Menú inicio – todos los programas – accesorios – símbolo del sistema
Crear archivo.asm
c:\edit nombre_archivo.asm
Renombrar un archivo.txt a archivo.asm en MS.DOS
C:\ren archivo.txt archivo.asm
|
DESCARGAR TASM
DESCARGAR SIM6802
Bueno cualquier comentario a mi pagina estaré gustoso de responder tus preguntas o dudas, puedes enviarme un correo electrónico a [email protected] y si eres de La Paz Bolivia puedes llamarme por teléfono al 72097633 , será un gusto atenderte, te recomiendo también accedas a la pagina principal donde encontraras un listado de programas que apuesto serán de tu agrado, recuerda que puedes publicar anuncios o proyectos con todos tus datos totalmente GRATIS!!! , será para mi un gusto serte de utilidad...