Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura...

20
Laboratorio de Sistemas Digitales Dep. Tecnología Electrónica Curso 200010 1 Microbot. Algoritmo de salida de un laberinto. Francisco Casanova García Eduardo Nájera Fernández Isidro Reina Monsó Paula Saameño Pérez Casimiro Serrano Caballero

Transcript of Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura...

Page 1: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

Laboratorio de Sistemas Digitales Dep. Tecnología Electrónica

Curso 200010 1

Microbot.

Algoritmo de salida de un

laberinto.

Francisco Casanova García Eduardo Nájera Fernández

Isidro Reina Monsó Paula Saameño Pérez

Casimiro Serrano Caballero

Page 2: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador
Page 3: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

INDICE

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Descripción Hardware .................................................................. .2

Descripción Software .................................................................... 5

Líneas de Código .......................................................................... 14

Diagrama de Flujo ........................................................................ 16

Page 4: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

INTRODUCCION

Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador 68HC11, incorporado en un microbot. Nuestro trabajo consiste en, mediante la programación del micro y la utilización de otros recursos HW, ya sean incorporados de serie en el robot o añadidos por nosotros, hacerlo salir de un laberinto de forma eficiente.

El microbot se ayuda de los sensores infrarrojos situados en su parte frontal para seguir una línea negra, que estará en todas las calles del laberinto. Estos dos sensores vienen incorporados se serie.

Además, se han añadido dos sensores más, uno a cada lado y alineados horizontalmente con los centrales, con la intención de que, cuando el microbot llegue a un cruce o curva, sea capaz de distinguir las distintas posibilidades y decida el camino adecuado.

El criterio que seguirá el microbot está basado en la detección de ultrasonidos. Pondremos un transmisor a la salida del laberinto que emitirá a á a 40KHz. Las paredes del laberinto facilitaran la reflexión de la señal emitida, de forma que se propague mejor por los caminos abiertos que por los cerrados.

El robot estará dotado de tres receptores a esa frecuencia, uno apuntando al frente y los otros dos a cada uno de los lados. Cuando se detecte un cruce, se hará un muestreo de los distintos niveles y se eligirá la dirección en la que la potencia de señal sea máxima.

En realidad, el receptor que añadimos recibe el ultrasonido y lo convierte en señal eléctrica. Se lo pasa como señal de entrada a un amplificador-conversar AC-DC, que también hemos añadido y se hacen las pertinentes conversiones analógico-digital.

Desgraciadamente, el ultrasonido no tiene alcance infinito. No podremos usarlos desde el principio del laberinto, solo a partir de, aproximadamente, la mitad. De forma que al principio nos guiaremos por la regla de la mano derecha.

En definitiva, el hardware añadido es el siguiente:

l Dos sensores más de infrarrojos (distinguen entre negro y cualquier otro color)

l Tres receptores de ultrasonidos a 40KHz. l Amplificador/Conversor AC-DC de bajo ruido. l Cuatro pilas más para poder alimentar de forma simétrica el diseño

anterior.

1

Page 5: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

DESCRIPCION HARDWARE

Hardware añadido al microbot:

Al microbot le han sido añadido una serie de componentes que en esta sección nos disponemos a comentar. .

l Receptores de ultrasonido:

Hemos colocado tres receptores para que, cuando el robot llegue a un cruce, pueda comparar las señales en las tres posibles direcciones: delante, derecha e izquierda. De forma que todos los receptores deben ser iguales, para que no se introduzcan errores debidos a las características singulares de dichos elementos hardware.

Objetivo:

Convertir cambios de presión sonora (a 4OKhz), en un determinado nivel de tensión continua. Esta tensión continua será muestreada por el microbot para tomar la decisión adecuada.

El circuitaje añadido, trabaja con una alimentación de +/- 6 Voltios, la tensión positiva es aportada por la fuente del microbot, mientras que han sido añadidas unas pilas que aportan los -6V

Todo el circuito ha sido montado en una placa de circuito impreso, que ha sido colocada en la parte superior del microbot.

Las partes del receptor son:

- Cápsula Rx ultrasonido: Encargada de recibir el sonido. Recibe a una frecuencia en torno

a 40 Khz. Lo que hace es convertir el sonido en señal eléctrica. Sin embargo estas señales serán de baja amplitud en la mayoria de los casos. Debido a la gran dispersión que encuentran las ondas sonoras en su propagación, llega con una amplitud de milivoltios, por lo que tenemos que amplificarla.

- Amplijkador: Usamos un amplificador inversor con el operacional TL8 1AM

para cada uno de los receptores. Cada uno de los amplificadores tienen colocados un potenciómetro para ajustar el valor de ganancia.

2

Page 6: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

- Rectificador. Con la señal amplificada hacemos una conversión alterna-

continua para que sea utilizable por el microbot. Para ello usamos un rectificador implementado con amplificadores operacionales de bajo ruido y resistencias de precisión (tolerancia del 1 OA).

El esquema de amplificador inversor y el rectificador es el que sigue:

- - - -

- -

- Transmisor de ultrasonidos: El transmisor estará situado a la salida del laberinto. Es una cápsula transmisora conectada a un generador de

funciones que le entregue una señal de amplitud máxima y de frecuencia 4OKhz. La señal que transmitimos es una señal cuadrada, pues es la que nos da una mayor potencia.

Se requieren una serie de condiciones para el buen funcionamiento del circuito:

i. Línea negra en cada camino del laberinto.

ii. Paredes adecuadas para que el sonido se refleje bien y vaya bien dirigido dentro del laberinto. Es conveniente tener las paredes del laberinto lo mas juntas posibles para tener mejores condiciones y que la señal sonora llegue con la mayor potencia a su destino. Cualquier pared abierta o en condiciones no adecuadas acarrearía una gran atenuación en la recepción.

Si nos encontramos demasiado lejos de la fuente, la señal recibida será de tan baja potencia que los tres receptores tendrán un nivel por debajo de un umbral, que establecemos para no confundir con el ruido que pueda aparecer.

3

Page 7: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

En ese caso, por defecto tomará el camino de la derecha, centro o izquierda según disponibilidad.

Por otro lado puede ocurrir que estemos muy cerca de la fuente en términos físicos pero por camino estemos lejos. Podrá ocurrir que tomemos decisiones erróneas ya que, aunque el transmisor esta dirigido hacia las calles, existe gran parte de señal que se escapa por las paredes del laberinto debido a las imperfecciones.

l Sensores infrarrojos:

Se han añadido dos sensores más a los ya existentes, situados en los extremos con la intención de que, a la hora de llegar a un cruce, seamos capaces de ver si existen caminos hacia la derecha, frente e izquierda.

Así tendremos toda la información posible del cruce al poco tiempo de detectarlo.

4

Page 8: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

DESCRIPCION SOFTWARE

El sistema de búsqueda de la salida del laberinto por el microbot se basará en medidas del nivel acústico de ultrasonidos en las calles de cada cruce.

La utilización de ultrasonidos en lugar de sonidos de-una frecuencia menor, audibles por el hombre tiene varias ventajas:

. La utilización de ondas de frecuencia relativamente alta, hace que su longitud de onda sea lo suficientemente pequeña para que no atraviesen las cajas de cartón. De esta forma, al poner el transmisor de ultrasonidos a la salida del laberinto, dichos ultrasonidos se propagaran mejor por los caminos abiertos (sin paredes). Cuando el microbot se encuentre con un cruce, el camino válido tendrá una potencia acústica mayor que los otros posibles caminos.

. El problema fundamental está en la dispersión del sonido por el aire. Debido a esto, la potencia de emisión del transmisor no será suficiente para hacer llegar la onda a todas las partes del laberinto con un nivel adecuado.

. Con ondas acústicas audibles habría un importante problema: las interferencias. Cualquier sonido o ruido podría ser suficiente para “volver loco” al robot.

. Además la utilización de una frecuencia no audible hace que no sea molesto para el oído humano.

Para la detección de cruces se han utilizado sensores de infrarrojos. Estos sensores distinguen el color negro de cualquier otro, así que usaremos una línea negra que estará presente en todas las calles del laberinto.

El robot posee cuatro sensores de este tipo, dos de los cuáles están situados en el centro y nos servirán para seguir la línea negra. Los otros dos estarán en línea horizontal con los centrales, uno a la derecha y el otro a la izquierda. De esta manera, cuando los sensores laterales detecten negro será porque estamos sobre un cruce.

La política de posicionado de los sensores de infrarrojos, así como la forma de hacer el mapa de caminos de cada cruce se explican a continuación sobre las líneas de programa ensamblador.

Descripción del código:

En principio el programa ocupó más espacio, pero lo optimizarnos para porder cargarlo en la memoria RAM (256 bytes). Por ello, el programa empieza con una directiva ORG a la dirección $0000, la dirección de la memoria RAM.

5

Page 9: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

Todos los registros y puertos que se utilizaran en el programa, a excepción del los registro índices y acumulador, tienen direcciones superiores y cercanas a la dirección $1000, de modo que se carga en el registro X el valor $1000.

ORG $0000 LDX #$lOOO

inicio STAA $0,X BRSET $0,X $04 calledch BRSET $0,X $80 calleizq BRSET %0,X $03 avanza BRSET $0,X $01 derecha BRSET $0,X $02 izquierda BRSET $0,X $00 callej

En principio el programa debe basarse en recorrer una línea negra, colocada por el centro de todas las calles, hasta encontrar unos eventos que interrumpirán este proceso.

En la posición $1000 de la memoria del robot se encuentra el Puerto A, dónde están conectados los sensores y dónde se ve el estado de los dos motores. El significado de los bits se detalla a continuación:

Sensor3 Motor2 Motor 1 Motor2 Motor 1 Sensor4 Sensor2 Sensor1 (izqda) Dirección Dirección ON/OFF ON/OFF (drcha) (cntr-iz) (cntrl-dr)

Por lo tanto, lo que hacemos en este primer bucle es comparar el port A con los posibles valores que provoquen dichos eventos:

Estos eventos son cuatro:

- Encontrarse con un cruce: Esto hará que se hagan las medidas acústicas necesarias y que se tomen la decisiones pertinentes.

6

Page 10: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

- Encontrarse con una curva: Entendiendo con esto un giro de 90”. No se realizaran medidas acústicas y el robot girará de forma inmediata.

- Encontrarse con una calle sin salida: sólo se realizará un giro de 180” sin comprobación alguna.

- Que el robot, mientras sigue la línea negra recta, se desvíe y tenga que volver a alinearse con ésta.

Los primeros dos eventos provocarán la interrupción del programa principal por detectarse, en alguno de los sensores laterales, una línea negra.

Debemos preparar subrutinas estándar para el tratamiento de los giros. Son subrutinas muy recurridas durante todo el recorrido del laberinto y se utilizarán de una manera inteligente. Esto nos hace comprimir el código aún más.

GIRO LDY #$CFFF GIRO1 STAA $1000

DEY BGT GIRO1

7

Page 11: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

DEX BGT GIRO LDX #$lOOO RTS

Usamos los registros X e Y cargándolos a los valores adecuados para el bucle se repita las veces necesarias y que el giro de 90” sea lo más exacto posible. Dichos valores los hemos calculado de forma práctica, es decir, hemos ido probando hasta que el giro ha sido de nuestro agrado.

El tratamiento del tercer evento, la calle sin salida, se hace a continuación, utilizando la subrutina anteriormente creada para realizar un giro de 180” y colocar el microbot en condiciones de seguir la línea negra.

callej LDX #$D LDAA #$58 JSR GIRO BRA inicio

El grueso del programa de guiado por una línea negra es sencillo. Los dos sensores centrales deberán estar dentro de la línea, detectando negro en todo momento. Si uno de ellos se sale de la línea, los motores deberán girar el microbot para introducirlo dentro de la línea.

derecha LDAA #$58 BRA inicio

izquierda LDAA #$38 BRA inicio

avanza LDAA #$18 BRA inicio

La filosofía que se utilizará para la creación del mapa de cada cruce es la siguiente:

Cuando uno de los sensores laterales detecte negro es porque ha detectado una calle que se cruza con la que en estos momento sigue el microbot. En ese momento deberá comprobar si el otro sensor lateral detecta camino también. Posteriormente se hará avanzar al microbot un poco para ver si de frente sigue habiendo calle. De esta forma podemos hacer un “mapa” del cruce y saber las posibilidades que tenemos.

Así pues, deberemos crear otra subrutina que nos permita avanzar una cantidad prefijada. Esta se utilizará para la correcta detección del cruce, es decir, cuando uno de los sensores laterales detecte cruce se deberá llamar a esta subrutina para que avance lo suficiente en el cruce y el otro sensor también detecte si por su lado hay calle.

8

Page 12: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

AVANCI LDY #$5FFF ;para que el robot avance una pequeña ctdad suficiente para saber si Hay camino de frente

bucle1 LDAA #$18 ;ponemos los dos motores ON para hacerlo avanzar. STAA %0,X DEY BGT bucle1 ;avanzará hasta que Y=- 1, después cargará otro valor en Y y volverá de la

subrutina LDY #$AFFF RTS

Ahora bien, el esquema del cruce, junto con otros datos, lo guardaremos en el registro B. Según sea la detección, cargaremos unos valores u otros en dicho registro:

La subrutina funciona de la siguiente manera. Si se detecta calle por alguno de los dos sensores laterales entramos en situación de cruce. Saltará a calkdch o calleizq dependiendo de que sensor lo haya detectado. Avanzaremos con la subrutina A V&VCI y comprobaremos si hay calle también en el otro sentido al detectado. Si hay calle por el otro sentido al detectado saltaremos a ambos y si no registraremos en B la situación detectada.

calledch JSR AVANCI BRSET %0,X $80 ambos LDB #$Ol BRA delante

calleizq JSR AVANCI BRSET $0,X $04 ambos LDB #$02 BRA delante

ambos LDB #$03

Ahora, para detectar si el camino sigue de frente habremos de avanzar. Esto es una ventaja para posteriormente poder realizar el giro, pues este avance nos coloca en una mejor situación para que, al girar 90”, encontremos mejor el camino elegido. Además dejará los sensores de ultrasonidos más centrados en sus respectivas calles.

Para registrar que hay calle en frente simplemente sumaremos $4, poniendo a 1 el bit correspondiente.

9

Page 13: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

delante JSR AVANCI BRSET $0,X $03 hay BRA final

haY ADDB #$04 BRA final

Al finalizar esta última línea, tendremos en el registro B el mapa del cruce.

Ahora bien, no siempre tendremos suficiente nivel de potencia de señal para considerar fiable la decisión por ultrasonidos. Tendremos que establecer un umbral por debajo del cual no tendremos en cuenta los ultrasonjdos y nos tendremos que guiar por Za regla de la mano derecha. La subrutina DECISION es la que hace que el microbot siga esta regla. La regla consiste en lo siguiente:

Si se ha detectado cruce y es tal que tenemos calle de frente y a la izquierda (única posibilidad de cruce sin calle a la derecha), sigue de frente. Si hay calle a la derecha, gira a la derecha, haciendo caso omiso, por ahora, de los otros posibles caminos.

Como previo a la ejecución de esta subrutina, en el caso en que sea llamada, se han hecho modificaciones sobre el registro B: eliminamos del registro las divagaciones que habíamos realizado antes de saber que el nivel acústico era insuficiente. Esto se hace con la primera instrucción ANDB #$7. Dejando de nuevo en B únicamente el mapa del cruce.

Registro B

Estos dos bits cambiarán sus valores según la decisión tomada: - 01 : El robot gira a la derecha. - ll : El robot tira de frente, - 10: El robot gira a la izquierda.

DECISION ANDB #$07 CMPB #%06 BEQ tifrent ;hay camino de frente y a la izquierda y saltamos a tifrent

giderec ;en otro caso es que hay camino a la derecha, de modo que giramos. ANDB #$E7 ORAB #$08 ;pone a 0 1 los bits 3 y 4 de B y gira a la derecha. BRA finac

tifrent ORAB #$18 ;pone a 11 los bits de B y tira de frente

fmac RTS

Una vez con el mapa de cruce hecho, podremos distinguir casos sencillos en los que es innecesaria una conversión analógica digital para la comprobación del nivel

10

Page 14: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

sonoro de la calles, algo que retrasa, por la cantidad de ciclos de reloj que necesita, el movimiento del microbot. Esos casos son las curvas, giros de 90”, que no dan lugar a una posible decisión.

final CMPB #$Ol BEQ final1 CMPB #$02 BEQ final2

; si hay calle a la derecha salta a final 1

;si solo hay calle a la izquierda, salta a final2 .

Si no es ninguna de esas dos posibilidades, habrá que hacer las conversiones analógico-digital oportunas, pues habrá más de un posible camino. Para ello activamos y configuramos el conversar.

Para activarlo se realizan los cambios oportunos en el registro Option ($1039), en el que se incluyen más opciones del microbot que no habrán de cambiarse de su estado original por no ser referentes a la conversión analógica digital.

Cargamos el registro Option en A y lo modificamos con una función OR, que activará el conversar, con la velocidad más rápida (CSEL=l).

Y la configuración será la de una sola conversión en cuatro de la entradas analógicas, las 4 primeras. Para realizar esto, tendremos que configurar el registro ADCTL ($1030):

ICCF 10 1 SCAN IMULT ICD Icc ICB ICA

LDX #fil000

LDAA $39,X ORA #$CO

;cargamos en A el registro Option ;ponemos a 1 los dos bits más significativos, activando el conversar y seleccionando velocidad rápida.

STAA $39,X LDAA #$l 0 STAA $30,X

;cargamos en Option la nueva configuración. ;configuramos para hacer una conversión en cuatro canales.

Espera BRCLR $30,X $80 espera ;espera hasta que CCF=l, lo que indica que se han producido las

conversiones y se han guardado en los registros correspondientes ADRx.

Una vez se tienen los valores de los niveles acústicos en las distintas calles, se han de realizar las comparaciones oportunas sobre los registros ADRx, para determinar en que calle se encuentra el nivel más alto.

No realizaremos comparaciones sobre los laterales que no lleven a ninguna calles, es decir, se comprobará únicamente el nivel acústico de los caminos detectados en el mapa cruce.

ll

Page 15: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

Las siguientes líneas serían sustancialmente menos, si se hubiera dispuesto de más registros.

Lo que se hace en las siguientes líneas es lo siguiente. Utilizando el mapa del cruce se comprueba si hay calle por cada lateral del microbot. Si la hay se compara con el valor ya existente en el registro A, que guardará el mayor nivel de los registrados. En cada comparación, se marca en el registro B, en los bits B3 y B4, el camino que por el momento tiene el mayor nivel acústico.

ANDB #$E7 PSHB ANDB #$Ol CMPB #$Ol PULB BNE frente ORAB #$OS LDAA $31,X PSHB ANDB #$04 CMPB #$04 PULB BNE cmpuno PSHB LDB $32,X

CBA PULB BHI cmpuno

;pone a cero los bits de última decisión tomada ;mete en la pila el registro de cruces para no modificarlo ;comprueba si hay calle a la derecha

;saca B de la pila ;si no hay calle a la derecha, salta afrente ;hay calle a la drcha. Ponemos los bits de última decisión a 01 (giro derecha) ;cargamos en A la conversión hecha por el sensor derecho.

;nos quedamos con el bit de camino de frente

;si no hay camino de frente, saltamos a cmpuno

;si estamos aquí, tenemos camino de frente y a la derecha. En B tenemos la conversión del sensor central ;comparamos A y B ;sacamos de la pila el mapa de cruce de nuevo ;si A (nivel derecha) es mayor q B(nive1 centro), saltamos para comparar con el sensor restante

;si seguimos por aquí es porque el nivel central es mayor frente

ORAB #$18 ;pone a ll la última decisión tomada (ha ido de frente) LDAA $32,X ;carga en A la conversión hecha por el canal “frente” (dirección ADR2)

cmpuno PSHB ANDB #SO2 ;se queda con el bit de calle a la izquierta CMPB #$02 PULB BNE cmpdos ;si no hay calle a la izquierda, salta a cmpdos PSHB LDAB $33,X ;si hay camino a la izqda, cargamos ADR3 en B CBA ;comparamos el camino izqdo con alguno de los otros dos PULB BHI cmpdos ;si el otro nivel es mayor q el izqdo, salta a cmpdos ANDB #$E7 ORAB #%lO ;si el nivel izqdo es el mayor, cargamos en ultima decisión tomada 10 LDAA $33,X ;en A cargamos el nivel izqdo (ADR3), que es el mayor de todos

En una última comparación, se comprobará si el valor muestreado sobrepasa un cierto nivel acústico que asegure que lo detectado es señal y no ruido. Ese nivel lo hemos fijado a $000 1, que es un valor cercano a los 20mV. Como se ha utilizado en el diseño de los sensores componentes de mucha precisión ( resistencias de tolerancia l%, Amplificadores Operacionales de bajo ruido y otros especiales para una conversión de alterna a contínua de mucha precisión), este es un nivel demasiado elevado para que sea ruido.

12

Page 16: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

Si no se supera este nivel, se realiza la decisión en el cruce según el criterio de la mano derecha.

cmpdos PSHB LDAB #$0002 CBA ;comparamos con el umbral mencionado PULB BHI seguir ;si A (nivel muestreado) es mayor que el umbral, pasamos a seguir JSR DECISION

Una vez realizadas las comprobaciones pertinentes y decidido, de la forma que sea, el camino a tomar, este está guardado en el registro B, en los bits B3 y B4. Realizamos una operación AND para eliminar la parte del registro que no nos interesa, la correspondiente al mapa del cruce, y actuamos en consecuencia, según el contenido de los bits que indican el camino a tomar.

seguir ANDB #$18 CMPB #$18 BEQ final3 ;si la decisión tomada es tirar de frente +final3 CMPB #$08 BEQ final1 ;si la decisión es girar a la derecha+finall

Para realizar los giros se utiliza la subrutina GIRO anteriormente creada, y para seguir de frente, se sigue vuelve al programa principal para seguir la línea negra.

final2 LDX #$4 giroizq

LDAA #$38 JSR GIRO

final3 LDAA #$18 BRA fin

;seguir de frente

final1 LDX #$4 girodch

LDAA #$58 JSR GIRO

fin JMP inicio END

13

Page 17: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

ORG $0000 LDX #$l 000

inicio STAA $0,X BRSET $0,X $04 calledch BRSET $0,X $80 calleizq BRSET $0,X $03 avanza BRSET $0,X $01 derecha BRSET $0,X $02 izquierda BRSET $0,X $00 callej

GIRO LDY #$CFFF GIRO1 STAA $1000

DEY BGT GIRO1 DEX BGT GIRO LDX #SlOO RTS

callej LDX #$D LDAA #$58 JSR GIRO BRA inicio

derecha LDAA #$58 BRA inicio

izquierda LDAA #$38 BRA inicio

avanza LDAA #$18 BRA inicio

AVANCI LDY #$SFFF

bucle1 LDAA #$18 STAA $0,X DEY BGT bucle1 LDY #$AFFF RTS

calledch JSR AVANCI BRSET $0,X $80 ambos LDB #$Ol BRA delante

calleizq JSR AVANCI BRSET $0,X $04 ambos LDB #$02 BRA delante

ambos LDB #$03

14

Page 18: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

delante JSR AVANCI BRSET $0,X $03 hay BRA final

haY ADDB #$04 BRA final

DECISION ANDB #$03 CMPB #$06 BEQ tifrent

giderec ANDB #$E7 ORAB #$08 BRA finac

tifrent ORAB #$18 ;pone a ll los bits de B

Bnac RTS

final CMPB #$Ol BEQ final1 CMPB #$02 BEQ final2

LDX #$lOOO

LDAA $39,X ORA #$CO STAA $39,X LDAA #$lO STAA $30,X

espera BRCLR $30,X $80 espera

ANDB #$E7 PSHB ANDB #$Ol CMPB #$Ol PULB BNE frente ORAB #$08 LDAA $31,X PSHB ANDB #$04 CMPB #$04 PULB BNE cmpuno PSHB LDB $32,X CBA PULB BHI cmpuno

frente ORAB #$18

15

Page 19: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

LDAA $32,X

cmpuno PSHB ANDB #$02 CMPB #%02 PULB BNE cmpdos PSHB LDAB $33,X CBA PULB BHI cmpdos ANDB #$E7 ORAB #$lO LDAA $33,X

cmpdos PSHB LDAB #$0002 CBA PULB BHI seguir JSR DECISION

seguir

ANDB #%18 CMPB #$18 BEQ final3 CMPB #$08 BEQ final1

final2 LDX #$4 giroizq

LDAA #$38 JSR GIRO

final3 LDAA #$18 BRA fin

final1 LDX #$4 girodch

LDAA #$58 JSR GIRO

fin JMP inicio END

16

Page 20: Práctica de Laboratorio de Sistemas Digitales. Microbot TRITT. · Esta práctica de la asignatura de Laboratorio de Sistemas Digitales está basada en la programación del microcontrolador

t No

SI *

NO

1

N 4

16