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

Principal   Descargar   Enviar Correo

 

DESCARGAR SIM6802

Principal   Descargar   Enviar Correo

 


    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...


RAUL ALEJANDRO QUISPE LARICO

 

1