Upload
vonhi
View
223
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD AUTONOMA METROPOLITANA
Unidad:
División:
Carrera:
Materia:
Titulo:
Fecha:
Alumnos:
lztapalapa.
Ciencias Básicas e Ingeniería.
lng. Electrónica en Computación.
Proyecto Terminal I y I t .
Diseño, realización de un Autómata Robot y comunicación a una PC.
21 de septiembre de 1 999.
Juan Carlos Rosas Cabrera 94217975 Javier Tores Vigil 94218449
Asesor:
UNIVERSIDAD AUTONOMA METROPOLITANA
Unidad lztapalapa
Ciencias Básicas e Ingeniería
Proyecto Terminal
Ingeniería en Electrónica
Diseño, realización de un Autómata Robot y comunicaci6n a una PC
Asesor: Jesús Barrios Romano
Integrantes: Matricula: Juan Carlos Rosas Cabrera 94217975 Javier Torres Vigil 94218449
Indice
Prologo ....................................................................... 1
Introduction.. . I 3 .....................................................
Etapa I .................................................................................. 7
Una visión en general del sistema y
Como se compone ..................................................
Partes del sistema en general ................................ El Autómata-Robot y sus partes ..............................
Sistema de traccion y movimiento ........................
Plataforma y estructura para soporte
de los circuitos controladores ................................
Lista de las partes del Automata-Robot ................ Sistema minim0 (8031) ............................................
Circuitos controladores de los motores
a pasos .......................................................................
Motores para la tracción .........................................
Motor para el sensor ................................................ Sistema de alimentacibn de energía ........................ Sistema de sensores ..................................................
Sistema de conversión halógico-Digital ...............
Primer programa .....................................................
13
14
16
17
17
19
21
22
24
26
Etapa I1 ................................................................................... 28
Comunicación entre PC' y el Autómata.Robot ....... 29
Sistema de Madulacicin FSK .................................... 30
Sistema de Transmisión de ............................... 31
Sistema de Recepción de FM ................................... 32
Sistema de Demodulación FS K. .............................. 33
Inicialización del puerto del Autómata-Robot ........ 33
Inicialización del puerto de la PC ............................. 34
Transmisicin de la PCI ................................................. 34
Transmisión del Auhjmata-Robot ............................ 34
Recepclon de la Pc'..................................................... 34
Recepcicin del Autcimata-Rahat ................................... 35
Control y monitoreo del Autómata-Robot
en una PC ...................................................................... 37
Tipo de encabezado y datos (Protocolo de
comumcaclon) 37
Descripción de la pantalla del monitor ....................... 38
Descripcicin de las comandos al Autiimata-Rahat .... 39
Ejemplos de exploraciones .......................................... 43
Programas finales ........................................................ 45
Programa del Autómata-Robot .................................. 45
.,
. ., ...............................................................
Programa del monitor de la PC .................................. 46
Apéndice A ................................................................................ A-i
Apéndice B ................................................................................ €3-1
Bibliografirt .
Prólogo
El proyecto descrito en este reporte se realizo con la inquietud de hacer algo nuevo e
innovador en los proyectos de investigación, inquietud que surge, debido a los avances tecnológtcos
que hemos tenido en esta era, hoy en día la mayoría de las empresas, industrias, oficinas, escuelas,
etc. se utiliza al menos una computadora y como consecuencia estas intervienen cada vez mas en la
vida diaria del hombre.
Como hemos visto en películas de ciencia ficción, 105 robots o autómatas, así como
también lo hacen las computadoras, intervienen en la vida del hombre, ya sea en el hogar, oficina,
industria, etc. en tareas especificas que pueden sustituir al hombre. Cuando se habla de un robot se
piensa que es algo tecnológicamente complejo, por varias razones, el primer punto, la tecnología,
por que hace tiempo, a pesar de que se tenia idea de como construirlos, no se contaba con la
tecnología de hoy; como segundo punto el costo, porque aún hoy en día los circuitos integrados,
servomotores, sensores, estructura y partes módes, son caros; y como otro punto importante las
tareas que va a realizar ya que debido a esto dependerá su diseño y complejidad.
Muchas personas piensan en un robot como una maquina que debería actuar como una
persona normal, imitar sus movimientos, reacciones y sentimientos; pero un robot real
(actualmente) está totalmente fuera de alcance de imitar en todos sentidos a una persona.
Podemos definir un Robot como una maquina que puede ejecutar ciertas tareas
respondiendo a estímulos externos; esto nos lleva a una gran variedad de robots, dependiendo de las
aplicaciones que estos puedan tener, para poder ser llamados robots estos deben cumplir varios
puntos en general:
- Tener sistemas de control de movimientos
- Tener sistemas sensores
- Ser totalmente independiente de la intervención de hombre
Existen tres clasificaciones para los Robots que dependen de l a s respuestas de estos a
estímulos externos, estas clasificaciones son:
1
- Robots Clase Alfa: Esta clase es la mas simple pues solamente pueden responder a
estímulos y realizar alguna acción en respuesta a ellos.
- Robots Clase Beta: Esta clase es un poco mas "inteligente" que la clase Alfa, igual que la
clase Alfa, la clase Beta también reacciona a los estímulos externos, pero ésta clase tiene la
habilidad de "recordar" las reacciones a dichos estímulos, esto es , teniendo un conjunto de
estímulos, el Robot almacena la información necesaria para un estímulo dado y utiliza ésta
información posteriormente si vuelve a ocurrir el mismo estimulo.
- Robots Clase Gama: Esta clase incluya las mismas características de las clases Alfa y Beta
e incorpora nuevas características que lo hacen muy superior a las anteriores. Esta clase puede
generalizar todos los estímulos que puede detectar. Como la clase Beta, también "recuerda" las
soluciones de un estimulo y además generaliza Csta respuesta para una variedad de estímulos
similares que no hayan ocurrido aún.
Para este proyecto se tuvo la inquietud de construir un Robot Clase Alfa pues éste podrá
librar obstáculos y moverse libremente, por si solo, mediante un sistema que mida distancias y
algoritmos que procesen la información y decidan que ruta es la adecuada para no chocar con los
obstáculos que pueda encontrar para que éste sea autómata, y de que además la información de las
distancias obtenidas se enviaran por radio, para ser desplegadas en la pantalla de una PC y junto con
un software que funcionará como monitor que se pueda controlar al Robot enviándole ordenes o
comandos para que sean ejecutadas por el autómata-robot para que se mueva de un punto a otro a
otro o que reinicie con la exploración del entorno por ejemplo.
Durante la última década, el empleo de un microprocesador como dispositivo compensador
ha aumentado, ya que su precio y confiabilidad ha mejorado notablemente. En la figura siguiente se
muestra un diagrama de bloques de un sistema de control digital de circuito simple. Esta
configuración dc sistema digital recibe el error, e(g, y realiza los cálculos para proporcionar una
salida, ~ * ( t ) , de forma que el hcionamiento del proceso sea igual, 0 casi, al funcionamiento
deseado. Muchos microprocesadores tienen la capacidad de recibir y manipular diversas entradas,
por lo que un sistema de control digital constituye frecuentemente un sistema multivariable.
ficropro- cesahr
Salida Proceso U *(o
t Medicion
Dagrama a bloques de un sistema de control d i g i t a l
En la siguiente figura se muestra un diagrama de bloques más completo de un sistema de
control por microprocesador. Este diagrama muestra que un microprocesador recibe señales en
forma digital (num6rica) y opera con ellas, en contraste con los que lo hacen mediante seaales
continuas. Los datos medidos se convierten de una forma analógica a otra digital por medio de un
convertidor, como se muestra en la figura. Después de procesar las entradas, el microprocesador
proporciona una salida en forma digital. Esta salida, a su vez, se convierte en analógica mediante el
cclnvertidor digital a analógico como se observa en la figura.
Entrada de
Diagrama de bloques de un sistema de control por un microprocesador que incluye los convertidores de seRales
3
12oooo000
1 o m o O 0
80000000
60000000
40000000
20000000
i
i O
]Aiio 1 1960 1 1970 1 1980 1 1990 1 2000 1 Cantidad 1 100 1 OOOO I 1000000 10000000 1 10o0o0000
Numero total de sistemas de control por computadoras instalados en industrias ~~~~ ~
Como se muestra en la siguiente g r s c a el número total de sistemas de control por
computadoras instalados en la industria y/o empresas ha crecido en las dos últimas décadas.
Un computadora consiste en una unidad de procesamiento y control (CPU), unidades de
entrada y salida, y una unidad de memoria. El tamaño y capacidad de una computadora varían con
el tamatlo, la velocidad y la potencia del CPU, que desde 1965 se han hecho cada vez más comunes
y más baratos las computadoras pequeñas, llamadas microcornputadoras o computadoras personales
(PC).
En los últimos años han disminuido exponencialmente el tamaño de los componentes y el
costo de los dispositivos lógicos empleados en la construcción de computadoras.
Los sistemas de control digital se emplean en múltiples aplicaciones: para máquinas
herramienta, procesos metalúrgicos, procesos químicos, control de aviones, control de tráfico de
automóviles, control de inyección electrónica de un auto, etc., y para que estas sean más eficientes
en la aplicación en las que se desempeñan. Ya que las ventajas de usar un control digital son: 1)
Mejoría en la sensibilidad de manejo en diversos dispositivos. 2) El empleo de sdales digitales
4
permite una aplicación m k amplia de los dispositivos. 3) E1 uso de sensores y transductores se
pueden realizar mediciones, transmisiones y acoplar seíiales de dispositivos de una manera efectiva.
E1 manejo automático de equipos para el hogar, la escuela y la industria es particularmente
útil para tareas peligrosas, repetitivas, tediosas o simples. En la industria se emplean máquinas que
cargan, descargan, sueldan, cortan o moldean, con el objeto de conseguir precisión, seguridad,
economia y productividad.
El empleo de sistemas digitales integrados a máquinas que realizan tareas como lo hace un
ser humano, fue previsto por diversos autores como el de las “Guerras de las Galaxius ”. Con
frecuencia sustituyen la labor humana en tareas repetitivas especificas. Algunos dispositivos tienen
incluso mecanismos antropomorfos, incluyendo algunos que reconoceriamos como brazos
mecánicos, muñecas y manos. Los robots pueden emplearse ampliamente en la exploración
espacial, en ensamblajes de autos, etc.
Un robot se podría definir como un manipulador reprogramable y multifuncional diseñado
para realizar diversas tareas.
5
El Proyecto de Investigación se divide en dos etapas:
Primera Etapa: Para el hcionamiento del autómata-robot se hará uso de un sistema
microcontrolador basado en el 805 1 , donde este va a ser el responsable de codificar y traducir las
instrucciones que, interna ó externamente, comanden los movimientos del robot así como también
el control de los demás sistemas que son parte de 61 para que sea autómata.
Segunda Etapa: La comunicación entre el robot y cualquier PC podrá ser alámbrica o
inalámbrica, dependiendo de la disponibilidad de los componentes y de la complejidad de estos;
también será factible usar una PC para exhibir, y compartir con el autómata, la inspección,
interpretación y resolución de obstáculos que encuentre en su camino en una área determinada, así
como también el control de éste.
Por cansiguicntc para mayor cxplicación dc su hcionamicnto, cl “sistcma” sc analizará cn
cuatro partes principales:
1) Una visión en general del Sistema y como se compone.
2) El Autómata-Robot y sus partes.
3) Comunicación entre el Robot y la PC.
4) La PC como monitor e interprete de comandos entre el usuario y el Robot.
6
Etapa I
7
Una vkibn en general del Sistema v como se compone
Se tiene la inquietud de realizar un autómata que haga la tarea de reconocer las dimensiones
o explorar una área determinada y que estas sean mostradas en el monitor de una PC. Este autómata
que se controla así mismo por medio de un sistema mínimo basado en el procesador 803 1 realiza las
tareas de desplazarse y medir las distancias de dicha área, la tarea de moverse a otras áreas para
realizar una nueva exploración se hará por medio de la PC de 2 formas: 1) La PC, por medio del
usuario se le indica que área se tiene que explorar. 2) La PC automatiza toda la exploración del área
total.
Partes del Sistema en General
Sistema de Comunicación -
Medidor de 1 I Controlador 1 Distancias 1 de servomotores
m Sistema de €
Software Comunicación -
8
El Aut6mata-Robot v sus Dartes
A continuacijn se describe las partes y funcionamiento del Autjmata-Robot: este se
compone de partes principales como lo son: sistema de tracción y movimiento, plataforma,
estructura para soporte de los circuitos controladores y sistema mínimo, así como también su
sistema de alimentacijn y sistema de sensores.
El Autómata-Robot esta diseñado como su nombre lo dice para moverse por si solo, este
autómata fue creado (tanto sistema mecánico, sistema eléctrico y de potencia, y circuitos de control)
por nosotros, la mayoria de las piezas del sistema mecánico fueron ‘recolectadas’. La platdoma, el
sistema de tracción y movimiento y la estructura para el soporte de los circuitos y batería se
muestran en las figuras siguientes y por consiguiente la explicación de cada una de ellas.
Sktema de tracción y movimiento.
3
La figura anterior muestra la forma de la plataforma que esta hecha de madera la cual tiene
tres puntos de apoyo en el piso, dos son los que van a proporcionar la tracción para su movimiento y
uno solo funciona como punto de apoyo al suelo o plano; se diseiio así de tal forma que formara un
triángulo equilátero, ya que este tipo de geometria haría fácil su desplazamiento para girar a
cualquier dirección sobre su propio centro de gravedad, ya que también el ancho de esta plataforma
ayuda a tener una mejor distribución del peso que soportaría el Autómata-Robot. El otro apoyo fue
disehado por nosotros el cual consiste en un volumen cilindnco hueco de tal forma que en su interior hay un cojinete 'cónico' el cual sirve como apoyo y permite que la esfera ruede con
facilidad, proporcionándonos así un movimiento mas eficiente.
g"
Figura de como se l o g r a la tracción del robot por medio de Motores a pasos
La anterior figura muestra el mecanismo empleado así como tatnbikn el ilisefio del sistema
de tracción del robot el cual es proporcionado por el movimiento de dos motores a pasos, se eligió
este tipo de motor para lograr una mayor exactitud en cuanto a su desplazamiento hacia adelante,
hacia atrás y cambios de dirección ya que el objetivo de este lo requiere. Ya que este tipo de 10
motimientos si se quiere que avance o retroceda el robot, los motores giraran en un solo sentido y
para dar vuelta se puede lograr de dos maneras: uno, dejar fija una llanta y la otra proporciona la
tracción adecuada para cambiar la dirección del desplazamiento; y dos, girar una llanta o motor en
un sentido y el otro en el opuesto al primero (ventaja que nos proporcionan los motores a paws por
la facilidad de su control), para que este gire o cambie de dirección de una manera mas rápida que la
anterior y su movimiento sea sobre su propio centro de masa.
La tracción, como ya se dijo anteriormente es proporcionada por motores a pasos, esta es
proporcionada por un engrane sinfin, que es perpendicular al eje de la llantita y al plano, la cual,
esta va unida a un engrane que hace contacto con el engrane sin fin anteriormente mencionado,
proporcionándonos así un libre movimiento del motor en los dos sentidos y a velocidades variables.
Los motores a pasos son motores que se obtuvieron de Drives de 3 %,, para PC's y son
motores de dos bobinas como la figura que se muestra a continuación y así como también sus
partes:
Figura de un moto: 3 pasos de dos bobims
Las partes del motor son:
Estator cup A : Encapsulado del Estator A Estator cup B : Encapsulado del Estator B output Shaft : Salida coil A : Bobina A coil B : Bobina B
Los Motores a pasos son usados cuando el movimiento y posición tienen que ser
precisamente controlados. Como su nombre implica el motor a paso se mueve en pasos discretos,
11
cada paso corresponde a un pulso que es suministrado a uno de los enbobinados del estator como se
muestra a continuación ,dependiendo del diseño puede avanzar 90° y 45" , 18" , o por una fracción de
grado , el desempeño de un motor a pasos depende grandemente del poder suministrado que lo
dirige, es decir, la fuente de alimentación. El cual su movimiento y control se hace a través de
controladores de motores a pasos y este a su vez son controlados por el sistema mínimo ya antes
mencionado.
Figura que ilustra como realiza los pasos un motor
En la figura anterior se muestra el ciclo para que el motor realice pasos que a continuación
se describe y consiste en un motor de un Estator con 3 polos salientes y un rotor de 2 polos hecho
de hierro dulce (moldeable). Las bobinas pueden ser exitosamente conectadas a una fuente D. C.
por medio de 3 switches A, B , C. Cuando los conmutadores están abiertos el rotor puede tomar
cualquier posición . De todas maneras si el conmutador A es cerrado el campo magnético resultante
creado por el polo 1 atraerá el rotor y entoces se alineara como se muestra .
Si abrimos el conmutador A y si simultáneamente cenamos el conmutador B el conmutador
se alinea con el polo 2 , en ese momento rotarh unos 60". La próxima vez si abrimos el conmutador
B y simultáneamente cerramos el conmutador C el rotor girara unos 60" adicionales , en ese
Inomento se alinea en el polo 3. C1aramente podemos hacer que el motor avance 60° por paso
cerrando o prendiendo los conmutadores en la secuencia A, B, C , A, B , C . De igual manera
podemos poner en reversa la rotación operando las computadoras en la secuencia de reversa
A,C,B,A,C,B. En orden de arreglar la posición final del rotor. E1 último conmutador que fue cerrado
12
en una secuencia de conmutación debe ser nuevamente cerrado. Esto mantiene el rotor en su irltima
posición y previene de moverlo bajo la influencia de fuerzas externas.
Con el sistema de alimentacih de los motores a pasos y el diseño del sistema mecánico de
transmisión de movimiento (engranes) son capaces de mover hasta 4 Kgrs. el cual es potencia
suficiente para cualquier tipo de desplazamiento.
Plataforma, y estructura para soporte de los circuitos controladores.
La estructura y soporte para los circuitos, así como también la del sistema minim0 es como
se muestra en la siguiente figura, la cual también esta hecha de madera y se eligió madera en
general para el Autómata-Robot por su fácil manejo, economía, resistencia y por su poco peso. Esta
solo su función es en desempeiiar un soporte adecuado para las tarjetas del sistema mínimo, el
sistema de control y potencia de los motores, batería, circuitos de modulación y demodulación
FSK, y circuitos de transmisión y recepción de FM.
La plataforma sirve para apoyo y fijación, corn9 ya hemos dicho anteriormente a los tres
puntos de apoyo en el suelo para el robot, la otra como se puede apreciar en la figura anterior
13
también hay espacio para una batería, la cual es recargable y nos proporciona la energía necesaria
para todo el sistema. Esta batería nos proporciona 12 Volts DC 4 Amperes para un ciclo
aproximado de trabajo de 10 a 15 minutos; al rededor de ésta está la estructura para el soporte de los
circuitos. Csta estructura soporta los siguientes circuitos: en un nivel se encuentra el sistema
mínimo, circuitos para la transmisión serial y controladores para los motores a pasos. Y a un
costado de la estructura se encuentra el circuito que va a controlar a un tercer motor de pasos de 4
bobinas el cual nos proporciona el movimiento angular de los sensores, la etapa de potencia de los
sensores, la etapa de amplificación de los sensores y el circuito convertidor de Analógico-Digital de
la señal de los sensores, los cuales le dirán al robot a que distancia se encuentra el objeto mas
cercano a él.
Lista de las partes del Automdta-Robot
1) Platdonna o base 2) Orificios para partes de tracción 3) Base para alojar el cilindro que contendrá a la esfera. 4) Cilindro hueco, parte superior. 5) Cojinctc cónico para apoyo dc la csfcra 6) Esfera 7) Tapa cilindrica para sostener la esfera 8) Cuerpo de tracción 9) Base larga para sostener el extremo interno del eje 10) Perno para fijar el movimiento de la llanta 1 1) Llanta con engrane para tracción 12) Eje 13) Base corta para sostener el extremo externo lateral del eje 14) Motor de pasos dos bobinas, que proporciona tracción 15) Tomillos 1/8” 16) Base para fijar el motor a la plataforma 17) Base del motor 18) Engrane sinfin acoplado al eje del motor para tracción, como transmisor de
movimiento 19) Eje del motor 20) Engrane de la llanta como receptor de movimiento 21) Llanta 22) Orificios pma tomillos 1/8” 23) Tuercas para tornillos 1/8” 24) Ratería 25) Compartimento para alojar la batería 26) Base para motor a pasos de cuatro bobinas para sensores 27) Estructura para colocar circuitos de manera lateral u horizontal 28) Alojamiento para circuitos nivel I 29) Alojamiento para circuitos nivel I1
14
Plataforma, estructura y sistema de traccicin.
La base principal de éste sistema mínimo es el microprocesador 803 1, el cual se escogió por
tener un puerto externo de 8 bits libre para controlar algún dispositivo externo; en nuestro caso se
utiliza para controlar tres motores de pasos (4 bits para controlar el motor del medidor de distancias
y 4 bits para controlas los motores de la tracción), también se escogió por la similitud de los
mnemónicos y la forma de programación con la familia 80x86 de INTEL
Este sistema esta compuesto como se muestra en la figura siguiente:
~~~~ ~ ~~~~ ~
Figura d e l sistema minim0 y circuitos para comunicación serial
E1 sistema esta compuesto por una EPROM 2764 de 8Kb, una RAM 6264 de 8Kb, un
decodificador de direcciones 74138, un latch 74373 (que multiplexa el bus) y el microprocesador
803 l .
E1 microprocesador tiene dos puertos uno para datos de 8 bits y una para la parte alta de
direcciones de 8 bits, con el puerto de datos y el latch se genera la parte baja del bus de direcciones
16
de 16 bits; los tres bits mas significativos del bus de direcciones se conectan a un decodificador el
cual sirve para mapear la memoria, es decir, divide toda la memoria direccionable (64Kb) en
bloques de 8Kb cada uno para habilitar dispositivos diferentes conectados al decodificador.
Circuitos Controladores de los Motores a pasos
En general hay dos circuitos controladores para los motores a pasos: uno para el sistema de
tracción y el segundo encargado para proporcionar el movimiento angular de los sensores.
El primero es un circuito MC3479 de Motorola el cual controla motores de 2 bobinas,
mediante tres bits; el primero para controlar el consumo de corriente, el segundo para controlar el
sentido de giro del motor, el tercero controla la velocidad de las revoluciones del motor, como se
muestra en el circuito siguiente:
I +IN i 5 1
CLK M1 M1
cor4rol& lor h€O?,?r.s
Circuito controlador de los motores de pasos y especificaciones
17
Para el circuito anterior, el programa en ensamblador o lenguaje de máquina para mover los
motores de pasos mencionados anteriormente con los controladores MC3479 es por medio del
siguiente procedimiento:
MUEVE: ;RUTINA PAPA MOVER EL MOTOR DE LA TRACCION
MOV DPTR, 119FOOH MCVX A, @ C P T R
MOVX @ D P T R , P. MOV DPTR, #9FFOH
MOV DPTR, Y9F0lH MOVX A, @DPTR MOV DPTR, U9FFlH MCVX @DPTR,A CLR c::
CFL RELOJ LCALL RETARDO2 L P L REiúJ LCALL RETARDO1
~ JNB C16,CICLOM LCALL DEC16
~ RET
CICLOM: LCALL RETARDO2
Listado para mover los motores de pasos
Del listado anterior las direcciones #9F00H y #9F01H sirven para almacenar el número de
pasos que deberán girar los motores, como este número de pasos es mayor que 256 se tuvo que
implementar funciones de 16 bits para soportar estos números tan grandes; una de estas fimciones
es DEC 16 que analizan en el Apéndice A con mas detalle.
Para escribir los valores correctos en las direcciones del contador se da a continuación el
siguiente ejemplo:
No. Pasos en Decimal No. Pasos en Registro YFOOH Registro YFOlH
Hexadecimal (mris significativo) (menos significativo)
440 (1 vuelta) O 1 B8H OlH B8H
884 (2 vueltas) 0370H 03H 70H I
Cabe señalar que una vuelta de la llanta corresponde a 90 grados aprox. (Si los motores
giran en sentido contrario) y avanza 12.5cm qrox. (si los motores giran en el mismo sentido); si se
quiere girar 45,270 6 360 grados, o avanzar 25,37.5 ó 50cm se puede hacer una regla de tres para
obtener el número de pasos adecuados.
1s
Las funciones de ~ T ~ O 2 y RETARDO1 sirven para ajustar la fiecuencia adecuada
para el buen funcionamiento de motor (para que giren mas lento o más rápido los motores se deben
modificar estos procedimientos).
E1 circuito que controla el movimiento angular del sensor es proporcionado por 4 bits del
8031 y una etapa de potencia para suministrar suficiente corriente para la fuerza del motor; este
motor de pasos es de 4 bobinas y por tanto no se necesita un controlador especial para 61 como para
los de 2 bobinas, en el siguiente circuito se muestra como se conecta la etapa de potencia al motor.
P4
P5
P6
P7
Etapa de potencia d e l motor de 4 bobinas
Fara el circuito anterior, el programa en ensamblador o lenguaje de máquina para mover el
motor de pasos mencionado anteriormente con el circuito anterior es por medio de los siguientes
procedimientos:
DECMD: MOV A, U0 ;RUTINA PARA CAMBIAR LOS BITS DE MOTOR (UN PASO ADELANTE) 1
19
MOV ACC.7,C MOV C.Pl.6 MOV ACC.6,C MOV C, P1.5 MOV ACC .5, C MOV C,P1.4
CLR C Mnv wr. 4 , c
RRC a CJNE A, IZ4,MOT:A SETE ACC.7
MOTlA: CJNE A, t72,MOTZA
MOTZA: MOV C, Pl.0 SETB ACC.7
MU/ Aii. O , i MOV C,P1.1 MOV ACC.1.C
MOV ACC.?,C MOV C,P1.2
MOV C,P2.3 MOV ACC.3,C MOV P 1 . A RET
;RUTINA PARA CAMBIAR LOS BITS DE MOTOR [UN PASO ATRAS) I?!cw": !?X? n, t C MOV C,P1.7
MO'J C, P1.6 i"iüi ACi . ó , 5 MOV C,P1.5 MOV ACC.5,C MOV C,P1.4 MOV ACC.4.C CLR c RLC A CJNE A, 11128,MOTl
MOV acc.7,~
MOT1: CJNE A. #32,MOT2
MOTZ. M011 r, P 1 . D
SETB a~c.4
SETE ACC.4
MOV ACC.O,C MOV C,P1.1 MOIJ ACC . 1 , C Mjov c, P i . 2 MOV ACC.Z,C MOV C, P1.3 MOV ACC . 3 , C MOV P1.A RET
Rutinas para mover el motor del sensor de distancias
Las rutinas &XMD y DECMD solo hacen el corrimiento de bits para que el motor avance o
retroceda un solo paso. Estos procedimientos se llamarán el número de veces que sea necesario por
otros procedimientos que mas adelante se explicarán. La secuencia de bits para el correcto
funcionamiento de los motores es el siguiente:
Estado1 O 0 1 1
Estado2 O 1 1 0
Estado3 1 1 0 0
Estado4 1 0 0 1
20
Como ya se había mencionado anteriormente, el sistema se alimenta con una batería de 12
Volts DC 4 Ampers la cual proporciona como muestra en el circuito siguiente: +12 Volts DC, +5
Volts DC; los +5 V son proporcionados por un regulador de +5 V 7805.
Adicionalmente para los integrados operacionales Lh.1741 los cuales son la etapa de
amplificación de los sensores requieren de una fuente simétrica, la parte positiva nos la proporciona
la batería anterior, para la parte negativa nos la proporciona una batería de 9 Volts DC como lo
muestra la figura siguiente:
12v
9v
ELL- + +12v
+5V
- 5v
Circuito del sistema de alimentación
21
Este sistema consta de l a s siguientes etapas:
1-Etapa de reloj: genera pulsos con una frecuencia determinada para sincronía.
2-Etapa de potencia del transmisor infrarrojo: A partir de los pulsos de reloj
junto con esta etapa suministra la corriente necesaria para el transmisor.
3-Etapa del emisor infrarrojo: Emite los pulsos que serán reflejados en alguna
superficie dada.
4-Etapa del receptor infrarrojo: Esta etapa recibe los pulsos del transmisor que
hayan sido reflejados en alguna superficie.
5-Etapa de amplificación: Como los pulsos recibidos son del orden de milivolts
en esta etapa se amplifican para que estos pulsos varíen de O a 5 volts y sean
enviados a la. etapa de acoplamiento.
Las cinco etapas anteriores coafoman el sistema sensor el cual se muestra en el circuito
siguiente:
I tsv
P
Circuito sensor
22
Este sistema sensor se encarga de proporcionar información de que tan cerca se encuentra
un objeto del robot, para ello el transmisor y el receptor están colocados una distancia de tal forma
que entre ellos se forma un hngalo de reflexibn con el objeto donde se va a reflejar la señal, A partir
del circuito anterior la amplitud de la señal recibida varia de acuerdo a la distancia que se encuentre
el objeto del sensor.
El emisor y receptor infrarrojo están montados en un motor de pasos de cuatro bobinas que
hace un barrido de 180" donde este motor da 100 pasos y por tanto obtenemos 100 datos. Para
obtener éstos 100 datos primero se regresa el motor a su posición de ángulo cero con la siguiente
rutina:
I ?~EG?s?.:?%'.J p.?, !IC1 ;REGRESA A SU POSICION ORIGINAL E L MOTOR ?.NGULO=O
CICL0R:LCALL INCMD LCALL RETARDO3
I D J N Z R7,CICLOR RET
I I Regresa motor a su ángulo cero
23
Sistema de conversidn Analógico-Digital
El sistema de conversión Analógico-Digital consiste en obtener la seiial que recibe del
sistema de sensores para convertirlos a datos de 8 bits que se hace por medio de un ADC0808; y se
hace de la siguiente manera: T,os sensores estrin acoplaBos a. un motor de pasos de c~latro bobinas
que hace un barrido de 180" el cual para llegar a estos 180" el motor da 100 pasos y en cada paso
obtiene un dato del ADC, lo cual quiere decir que al final de cada barrido de 180" tendremos 100
datos los cuales se almacenan en la memoria RkM (6264) los cuales son procesados por el 803 l . El
circuito Tire hace esta conversión se muestra a continuación.
De el Sensa
Para la lectura de un datci del convertidor Analógicci-Digital se deben de realizar los
siguientes proceditmentos:
;HACE QUE EL A/D EMPIEZE A CONVERTIR
CINIAD: JNB P1.3, CINIAD :::IA3: KG:' DPTTR, /GAGG"O::
CINIADZ: JB P1.3.CINIAD2 MGV R7, #21H
MOW. PDPTR, A ClNIXU4:UJNZ K~,LlNIHU¶
CI?!I?.D3: ,??!E CAD, CI?!I?.D3 FINAD: RET
;RUTINA DE INTERRÜPCIGN DEL A/D iNTAD: PÜSH ÜPi,
;RETARDO
PUSH DPH MGV DPTR, iiOAOOOH
MOV DPTR, #9FF2H MOVX A, @DPTR
?IC'.? !?DER,?. POP DPH POP DPL SET9 CAD muv IL, 08'311
RET1
. . . . . - .. - -. .
Kutina para convertir la &al anal6gica a dato
24
La rutina INIAD hace que el convertidor comience a convertir, pero como éste se tarda
loops se debe esperar hasta que este listo el dato convertido y la rutina de interrupción active el bit
CAR, para continuar con el programa.
La rutina de interrupción lee el dato convertido en la dirección AOOOH , lo almacena un
registro en la dirección 9FF2H y pone en ‘bl” el bit CAI).
Para que lo anterior funcione se necesita que el microprocesador acepte interrupciones
externas (registro IE) y ésta debe estar activada.
Procedimientos para leer I 00 datos del semor
Como el motor debe hacer un barrido de 180 grados para obtener 100 datos se deben de Ilamar Las siguientes rutinas para obtenerlos.
LEEDIST:!%’! P.?, ulnC ;LEE LAS DISTANCIAS Y LAS GUARDA A PARTIR DE 9EOOH
;1nc psscs i” - 1 . 8 ;rzdcs MOV DPTR, f9EOGH
CICD1ST:CLR CAD PUSH DPL pijjii DPH
T ,CAI , l T N T A D :T,T,AMA A TA RIITTNA PARA CONVTFRTR CON FT. A / D
MOV DPTh,#9FFZH ;LEE VALOR DEL A/D MOVX A, @DPTR POP DPH ;GUARDA LO CONVERTIDO EN LA TABLA
MOVX @DPTR,A PC? EPL
LCALL DECMD INC DPTR L L U L RETAhTIDu3 DJNZ h 4 , C I C D I S T PET
Rutina para l e e r 100 datos
Primero se debe regresar el motor a su posición en ángulo cero y después se llama a
LEEDIST.
25
Para probar el sistema que mueve al aut6mata se elaborci un programa donde se puede
demostrar todos los movimientos posibles por él.
Para entender el programa primero se tiene un diagrama de flujo en donde se muestran los
pasos a seguir para conseguir que el automata se mueva.
+ Cargar No de paso S
Mntorl-1
I ik
a la Derecha !
__r_
ucn Motons
Avanza de fnnte
Motorl-1
T
Motor14 Motor2-1
c.% j
ueve Motorer
Avanza de frente
9 Cargar No de paso S
Avanza de hacia --”-- atms I w
[ F i n ]
A partir del diagrama de flujo y entendiendo los pasos que se realizan se puede obtener el
programa completo en lenguaje ensamblador para el 803 1 (Ver Apéndice A “Primer Programa”).
26
Etapa I1
Pasa realizar esta segunda etapa y tomando como base la etapa anterior, se desarrolló el
sistema de comunicación entre la PC y el Autómata-Robot, y el programa para el control y
monitoreo del mismo.
Contunicacidn entre PC y el Autdnfata-Robot
Para establecer la comunicación entre la PC y el Autómata-Robot se usa una comunicación
punto a punto, pues los dos aparatos mencionados son los únicos que actúan en la comunicación.
A continuación se presenta el siguiente diagrama a bloques que explica la Transmisión-
Recepción de los datos:
Y Y
Se escogió que la transmisión y recepción de datos entre la PC y el sistema hera mediante
el puerto serial debido a que la mayoría de la PC's cuentan con este y su bajo costo.
Para lograr la transmisión de los datos se requiere de 4 módulos:
1 - modulación FSK
2 - transmisión FM
3 - recepción FM
4 - demodulación FSK
Debido a que la transmisih de los datos se hace m ambos sentidos se requieren estos 3
módulos tanto para la PC y para el Autómata-Robot, lo única que difiere en la transmisión y
recepción es en la frecuencia a la que se sintonizan.
29
Con lo anterior se define en general como está el sistema de comunicación y como la
transmisión en un sentido es exactamente igual que la recepción en sentido inverso, sólo se
describirá en un solo sentido. A continuación se tiene el diagrama completo de la transmisión de
datos de cada bloque:
t
Circuito para la modulación FSK
Lo que hace el circuito anterior es modular los pulsos TTL como se muestra en la siguiente
figura:
1 ov Sa lid o
Moduloci6n FSK
ov
5v
Pulsos de Entroda
J Ln
I J 30 ov t
Como se observa en la figura anterior, cuando se tiene un nivel alto la frecuencia de
modulación a la salida del circuito FSK es de 1 . 4 m z y cuando se tiene nivel bajo la frecuencia es
de 2.4KHz. Para ver mas con detalle como se logra la frecuencia de modulación ver el apéndice C.
I T
L c L
7 Antena
Transmisor de FM
Para variar la frecuencia de transmisih basta con variar el valor del inductor que esta entre
los pines 10 y 1 1 . Para nuestro caso fl y f2 se encuentran dentro de la banda comercial donde fl =
104.lMHz y f2 = 102.8MHZ, se utilizan dos frecuencias distintas para enviar y recibir datos
simultáneamente sin que ocurra interferencia.
31
I - -
Receptor de FM
Para sintonizar la &frecuencia adecuada del transmisor hay que variar el potenciometro del
circuito el cual se encuentra en la banda comercial y para que 1 receptor se encuentre en ésta banda
se debe de variar L l .
32
Debido a las características que presentó éste circuito, la frecuencia máxima a la que se
puede demodular sin distorsión es a 600Hz.
Con los circuitos anteriores ya se puede realizar la comunicación entre el Autómata y la PC
mediante sus respectivos puertos que se programaron con las siguientes características:
1 - Velocidad: 600bps
3 - Longitud de palabra: S bits 4 - Bits de parada: 1 bit
2 - Paridad: Ninguna
Los programas siguientes inicializan los puertos de comunicaciones; la programación en la
PC se hizo en lenguajes C++ para DOS debido a l a s facilidades que éste ofiece para el control de
los puertos:
MOV SCON,W01010010B ;INICIALIZA LA TRANSMISION SERIAL MOV TH1, #OF3H ; VALOR DE AUTO-RECARGA PARA 300 BAUDS MOV TMOD, X20H ; MODO DE AUTO-RECARGA
MOV IE, #85H SETB TR1
;HABILITA LAS 1NTERRUPClONES I
inicia el puerto de1 Autómata-Robot
33
Inicializacidn del puerto de la PC
#define 1 #define
COM SETTINGS (@xA@1OxO3~0x0010x001
bioscom ! O , SETTINGS, CCM) ;
Los siguientes programas muestran la transmisib serial de la PC y del Autbrnata:
I void, transmite-car (char c)
int status2; status2=l;iosc~m~3, O , COMI ; if (status2 L DATA-READY)
biosconll. c, COMl; bioscom(2, O , COM);
I
Transmision de un caracter en lenguaje C
Transmisión de Autómata
I ;TRANSMITE CAaCTER OUTCHAR: JNB T I , $ ; ESPERAR A TRANSMISOR L I S T O i
CLR T I ; LIMPIAR LA BANDERA MOV SBUF,A ; TRANSMITIR I RET
I I Transmisi6n de un caricter en lenguaje ensamblador
r
int recivcarfint 'ban) I
while [ ;DONE1 int status2, out3, DONE=FALSE;
I status2 = bioscom(3, O , COMI; 1 f l s t a t i i ? & DATA-HRADYI
1 o u t 3 = broscom(2, O , COM); DONE = TRUE;
1 +L."". uuII-I,
I return o u t 3 ;
I
R e c e p c i h de un crrnicter en lenguaje C
34
; L E E C A R k T E R INCHAR: J N B R I , $
CLR R I MOV A , S B U F RET
; LECTUKA
I I Recepción de un carhcter en lenguaje ensamblador
Para realizar la comunicación entre la PC y el Autómata-Robot se us6 el siguiente control
de flujo, ya que el robot no puede realizar la transmisión y recepción simultáneamente debido a
características internas del microcontrolador (Ver Apéndice B):
35
Ejemplo: Si se quiere transmitir 2 bytes.
36
A pesar de que el Robot es autónomo se necesita. de un programa que administre la
transmisión y recepción de datos para su monitoreo, exposición de datos y control del Autómata-
Robot en donde quiera que se encuentre. Para esto se eligió el lenguaje C++ para DOS como
lenguajes de control de esta interfaz.
Como el autómata mmda datos a la PC y viceversa, debe existir un protocolo de
comunicación entre éstos, ya que la PC o el autómata deben diferenciar los datos que se están
recibiendo y codificar los que se están mandando. Para esto se diseño el siguiente formato para el
protocolo de comunicación:
Encabezado:
Datos:
Encabezado I Datos 1 Es el que identifica que tipo de dato se va a transmitir o recibir y tiene como longitud 1 byte (un caracter). Este pude ser: cadena (varios bytes),un carácter (un byte) o un número compuesto(dos o mas bytes) .
Tipos de Emabezado y Datos
Como para cada tipo de encabezado hay diferentes datos, para diferenciarlos se tiene la
siguiente tabla:
37
Teniendo el protocolo y la forma de comunicar entre la PC y el Autómata-Robot se realizó
una interfaz para interactuar con el autómata, a continuación se presenta la pantalla que aparece:
En esta pantalla se pueden apreciar 5 ventanas:
1 -Mapa
2 - Atributos del mapa
3 - Estado del sistema
4 - Recepción
5 - Herramientas
Estas ventanas realizan las siguientes hciones:
1 - Mapa: Despliega los datos enviados por el autómata, éstos datos son: distancia y ángulo;
éstos datos se grafican con respecto al centro de la ventana y con la posición que
tenga el robot.
35
2 - Atributos del mapa: Presenta la escala (ZOOM) a la que se está observando los datos
que se despliegan, además de indicar la posición del centro del mapa que se
puede alterar con los botones con flechas.
3 - Estado del sistema: Esta ventana presenta 3 cosas:
a) Comando - Es el comando que está en espera de ser enviado al autómata y
que fue seleccionado de la ventana de Herramientas.
b) Estado - Es el estado en que se encuentra el robot, i. e., mensajes que dicen
que función está realizando, como por ejemplo: “EXPLORANDO,
”TRANSMITIENDO”, etc ...
c) Error - Mensaje de error que envía el robot .
d) Mensaje - Cualquier otro mensaje que envíe el robot.
4 - Recepción: Indica los datos que está enviando el robot, desde su posición y ángulo hasta
los datos de las distancias medidas.
5 - Herramientas: Son las funciones que se pueden escoger para que las realice el robot
a) Reiniciar - El robot espera hasta que se ejecute éste comando y comenzar
su tarea autónoma.
39
b) Pausa - Detiene toda actividad hasta que se melva a presionas Fausa o
Reiniciar.
c) Moverse - Al presionar este botón se debe seleccionar con el Mouse la
posición (dentro de la ventana Mapa) a donde se quiere que se mueva el
robot y posteriormente presionar el botón Enviar (éste es el mismo botón
pero muestra otro nombre durante la ejecución). El ejemplo para utilizar
esta función se explica mas adelante.
d) Recupera - El robot vuelve a realizar las mediciones en la misma posición
donde se encuentre ademk de que reinicia el estado del monitor y del robot
a cero.
e) Salir - Cierra el programa.
40
Una de los botones de la ventana de Herramientas que se debe explicar con mas detalle es el
de “MOVERSE”, éste botón manda una serie de comandos al autómata para que éste se desplace a
la posición que se haya seleccionado y una vez que se ha alcanzado la posición se continua con la
exploración.
Ejemplo para la selección de un punto a donde se quiere desplazar el autómata:
1 - Al presionar el botón “MOVERSE en este aparece el texto “ENVIAR”, además que
en la ventana de “Estado del sistema” aparece el mensaje “Seleccione (X,Y) en el mapa”.
2 - Ahora con el apuntador del “mouse” seleccione un punto cualquiera dentro del mapa a
donde quiera que se mueva el autómata, al hacer click aparecerán las coordenadas X y Y
41
4 - Al tener la posición deseada se presiona el botón “ENVIAR”, éste botón regresara a su
texto original (“MOVERSE”) y con esto se envía los comandos necesarios para que el autómata se
mueva a la posición deseada.
42
Ejemplo para la exploración de una superficie semicircular cóncava que se encuentra enfkente del robot.
43
Ejemplo de una exploración de una superficie plana aplicando una algoritmo para visualizar la geometría de la superficie.
44
Programasfinales
Programa del Autómata-Robot
El primer programa que se describirá es el del Autómata-Robot que toma parte de las
rutinas hechas para el Proyecto I e incorpora nuevos, como son el de la transmisión y la recepción
de datos, así como la selección y ejecución de comandos enviados desde la PC, para entender la
lógica del programa se tiene el siguiente diagrama de flujo:
Verifica el comando enviodo
Moviniento 4utbnono
D Moverse o ...
I
Diagnuna de Flujo de Autómata-Robot
A partir del diagrama de flujo se puede crear el &digo para el autómata, en éste código se
incluyen rutinas de 16 bits y ambos se encuentran en el Apéndice A (Programas Finales).
45
Apéndice A
Programas
F u n c i h de incremento 16 bi tf .............................................................. A-ii
Funcion de decremento de 16 bits ......................................................... A-ii
Puncicin para multiplicar dos n6meros de 16 bits.. ............................. A-iii
FuncMn para sumar dos números de 16 bits ....................................... A-iii
Rutina para restar dos números de 16 bits .......................................... A-iv
Rutina para comparar dos números de 16 hits ................................... A-iv
Primer programa ................................................................................... A-v
Programa del Autbmata-Robot ............................................................ A-vi
Programa del monitor de la P(1 ............................................................ A-xv
A i
Este apéndice contiene las rutinas que realizan operaciones de 16 bits, éstas fueron necesarias de implantar ya que el microprocesador solo tiene registros de 8 bits y muchas de las variable que se usan para el control de Autjmata-Robot deben ser mayores de 8 bits.
Función de incremento 16 bits
INCi6: CLR OOH ;INCREMENTA LA VARIABLE DE 16 BITS EN YFFOH Y 3FFlH
MOV B.#D
MOVX A, @DFTR ADD A. #1 JC MOVX I U P l K , H
INCHIGH
LJMP PINS16 I?!CUIGU:MOT.' EPTP.. #OFF15
MOVX A, @DPTR CLR DOH
i.iG""i @LPTR, i. ADD A, If1
1 , ^ T , n n m n In..r_nsl L.,"" u r l , , , " , L L " i ,
FiNS16: RET
E~ttix pare ir,crerr.entar en 1 le variaS!e de 16 Sits
Función de decremento de 16 bits
Esta rutina incrcmmta a uno la variablc dc 16 bits, NO altera ninguna bandcra.
;DECREMENTA LA VARIABLE DE 16 BITS EN 3fFOH Y 9FFlH
DEC16: MOV DPTR,#3FFOH ;VERIFICA SI ES CERO Y . D Y r h l n C D T 7 r? c , ..II..LI y _ _ 1_1
MOVX A, FDPTR C J N E A, #DDH,SIGUE ~ ~ ~ " . D P T ~ , ~ ~ F ~ i ~ MOV7 a, PDPTR CJNE A, #OGH, SIGUE
LJMP FiNRl6 SETB C16
C T r l r O . cLp\ C
;PRENDE BIT
.,&YVL..
CLR AC MOV B,#O MOV DPTR, I1YFFOH M0Q-A A, @DP'IR
M O W FEPT?.. P. SUBB A, #1
JC LJMP FINR16
DECHIGH
DECH1GH:MOV DPTR, U9FFIH .,-.-, (.I""* A, GÜFTR CLR C CLR AC
MOVX @DPTR, A SUBB A, X1
r T * r D l i . DOT i-l..I". . ~ - ~
Rutilia pata iui;lenieida elk 1 la w~iabtljia da Iú bits
Esta rutina decrementa en uno la variable de 16 bits, éSta rutina pone a uno el bit C16 s6:o si la variable ha llegado a cero,
A
Función i para multiplicar dos números de 16 bits ;MULTIPLICA DOS VARIABLES DE 1 6 B I T S A = 9FFOH Y 9FF1H ; B = 9FF2H Y 9FF3H , RESULTADO EN 9FFOH Y 9FFOH
SETB RS1
MOV DPTR, 89FFOH SETB RSO
K2LTlS: "SH "S"'
. I W V ~ A, @DPiR MOB RO, A 1°C D P T P MWJX A. @OPT!? MOV Rl, A INC DPTR :.:c'"y 4, PrjPTR MOV R2.A
MOVX A, @DPTR INC DPTR
MOV R J , A LCPLL ML'LTB MOV A. R4 MOV R6.A MOV A.R5 i.lG< R7.A MOV A , R 2 MOV i ( ? : A LCALL MULTE MOV DPTR, YBFFOH MOV A , R 5
INC DPTR MOV A, 800 MOVX @DPTR,A I I N L UPlK MOT1 F.. a 5 MOVX @DPTR, A
MOV A,R7 INC DPTR
LCALL SUMA16 POP PSW RET
14n.r" o n n m n n 1 ' Y " & C Y T I I I , "
,.".", O.." I ,.,U"A C L J r l n , n
KLLTB: U""' ?.,?.I ; rn~ l t ip l i ca valores de 8 b i t s para MULT16
MOV B,R3 MUL AB MOV R 5 , A Mü' R4, a
MGV a , ~3 MOV A,RO
MUL AB ADD A.R4 ? G " J R?,A MOV R3, B RET
!?u& para multiplicar dm variables de 16 bits Esta rutina multiplica dos variables de 16 bits cada una y el resultado es de 3 bytes; no toma en cuenta los signos de las variables,
Función para sumar dos números de 16 bib
I ;SUMA DOS VARIABLES DE 16 B I T S A = 9FFOH Y 9 F F l H
CLFl MOV .,-.", L.," Y h
MOV PlOV MOVX ADD j .l. Mnii
MOVX MOV MOVX MOY MOV MOlnr ADDC MOV MOVX
AC DPTR, 8 9 F F l H ;SUMA 9 F F O , 9 F F 1 CON 9 F F 2 , 9 F F 3 A, PDPTR B.A DPTR, U9FF3H A, @DPTR A, B DPT?., $ ? F F l H @DPTR,A
A, @DPTR DPTR, X9FFOH
a,ñ DPTR, X9FFZH
A, B A; @DPTP
DPTR, I19FFOH I? DPTR. A
I RET
Rutina para s u m a r dos variables de 16 bits
Esta rutina suma dos variables de 16 bits cada una, NO detecta sobreflujo.
-4 ... 111
Rutina para restar dos números de 16 bits
;RESTA DOS VARIABLES DE 1 6 B I T S A = 9FFOH Y 9 F F l H ; B = 9 € F 2 H Y 9FF3H , RESULTADO EN 9FFOH Y 9 F F l H
RESTAI6:CLR 17
MOV D P T R , # 9 F F 3 H ; R E S T A 9 f F O , 9 F F 1 MENOS 9F€?, 9 F F 3 MOVX H. @DPTR ;RESULTDO EN 9 F F O . P F F l MOV B , A MOV UPI'K, X Y L t IH MOVX A, @DPTR SL'BB F. , B MOV DPTR, U9FFlH MOVX IPDPTR, A MOV DPTR, #9FFZH i"iiiv;i A, PDpTñ MOV R,A MOV DPTR, %9F€OH MOVX A, @DPTR SUBE A,B ?$O'.' E X ? , , # ? F F C H MOVX @ D P T R , A
- 7 7 . " i u n nc
I RET
Rutina para restar dos variables de 16 bits
Esta rutina restar dos variables de 16 bits cada una, NO detecta acarreo.
Rutina para comparar dos nrimeros de 16 bits
;COMPARR DOS VARIABLES DE 1 6 BITS A = 9FFOH Y 9 F F l H ," .- - 9?F?!? Y 9?F3!? ;RESULTADOS: MA ; A>B 1 ; A<B O ; ,+E J
; xyxxyxx 1 CMP16: PUSH PSW
ME O i "
S E T B
::O': S E T B
MOVX MOV
MiiV'Y, INC
MOV
MOVX MOV I N C
MOV ;.;o."A
CLR CLR CLR
T kt¡-
xcv C J N E MOV CJNE
NOEQ?: JC 5 LXP
CLR SETE
S LmP
SETÜ S LlNP
NOEQ1: JC S E T B u n S X P
S E T B
MENOR2 : CLR
MENOR1: CLR
FCMPi6: POP "" X ? I
RS 1 RSO
A, @DPTR D X R , #?F%H
RO,A DPTR A, iaüPTiK R 1 . A DDT?. A, PDPTR m , A
A, ?üEñ DPTR
K 3 . A C MA NE
A. OlAH, NOEQl A, R1 A , OlBH, NOEQL E i H P i 6
." M4 ME ECMP16
MA
FCMP16
MA ML F P M D l 6
" on 1 ,, L ~ "
MENOR2
.,- , - A L
MENOR1
MA
PSW ME
;W EN EL BANCO 3 = 1A
;R3 EN EL BANCO 3 = 1B
. .- - Rutina para Comparar dos variables de 16 bits
Esta ultima rutina pone a uno o borra ciertos bits o banderas (MA y Me) para saber si la primera variables es mayor, menor o igual.
A
Primer Programa
ORG O O O O H
MAIN: CLR RELOJ SETÜ M i i Q
VARIABLES PARA AVANZAR DEREHO S E T B MDER
MOV DPTR, X9FOOH MOV A, ROEOH M ' 3 W ?OPT?.. R
INC DPTR MOV A, X06H ;";c"-x BDPTR, A LCALL MUEVE
PASOS PARA QUE LAS
MOVFR MCITCIRCS
CLR MIZQ S E T B MDER
MOV DPTR, X9FOOH MOV A, #OEOH MOVX @DPTR, A
PAbO5 P A W U I W K JbU
MOV A.XO6H INC DPTR
MOVX @DPTR, A LCALL MUEVE
l r n n T n n T r C n n n n r r n n n n "n,\LnuYIu rn._ ( 1 I 1 - l i fi
MOVFR MOTORFS
S E T 9 M I Z Q S E T B MDER
VARTART.F.S PARA AVAN7AR nF.RCHO MOV DPTR, X9FOOH MOV A, XOEOH MOVX @DPTR, A
MOV A, Xfl6H INC DPTR
MOVX @DPTR,A T.CAT.1. MIJFVF
PASOS PARA ClIF T A?
MOVER MOTORES
S E T B MIZQ r 1 . R MnFR
VARIABLES PARA GIRAR A MOV DPTR, X9FOOH MOV A, XOBRH MGVX D???.. A
INC DPTR MOV A.XO1H Mü"X ?ÜPTR,A LCALL MUEVE
PASOS P A W G I R A R
MO1IF.R MOT0RF.S
S E T B MIZQ S E T B MDER
. , " n T n " T P . C n n n n n 3 , n r r r n n "n,,Lni,A,ud cfi>- I ? " N " " I \
MOV DFTR, X9FOOH MOV A, XOEOH MOVX @Ut ' lK ,A
PASOS PARA QUE LAS
MOV A,XO6H INC DPTR
MOVX BDPTR, A LCALL MUEVE
MOVER MOTORES
CLR MIZQ
VARIABLES PARA AVANZAR HACIA CLR MDER
MOV DPTR, Y9FOOH MOV A, XOEOH MOT' @DPTR, A
INC DPTR MOV A. #06H MOVX BDPTR, A LCALL MUEVE
PASOS PARA QUE LAS
MOVER MOTORES RET
; I N I C I A L I Z A ;LOS :VALORES DE LAS
, _ . r a D C n EL ?!TLyE!?." DE
;LLANTAS DEN 4 VUELTAS
;Y LLAMA LA RUTINA PARA
; L o s ;VALORES DE LAS
; L A DERECHA
;CARGA EL NÍJMERO DE
;GRADOS
; Y LLAMA LA RUTINA PARA
;LOS ;VALORES DE LAS
;CARGA EL NUMERO DE
;LLANTAS DEN 4 VUELTAS
;Y T LAMA 1.A RIJTTNA PARA
;LOS ;VAl.CRFS nF 1.4s
;LA IZQUIERDA
;c?.?.G?. CL ?!%E?.O DE
; 9O GRADOS
;Y LLAMA LA RUTINA PARA
; L o s ;VALORES DE LAS
; DEREHO
; C A K W LL NUMLKV UL
;LLANTAS DEN 4 VUELTAS
:Y LLAMA LA RUTINA PARA
; L o s ;VALORES DE LAS
: ATRAS
;CARGA EL NUMERO DE
;LLANTAS ÜEN 4 W E L T A S
: Y LLAMA LA RUTINA PARA
D E C l 6 : MOV MOVX C J N E MOV MOVX C J N E S E T 9 T,.TMP
SIGUE: CLR CLR MOV MOV MOVX SUBB MOVX
LJMP
MOVX CLR CLR SIIRA MOVX
_1 7,-
DECH1GH:MOV
FINR16 : RET
MIZQ EQU RELOJ EQU
MDER EQU
DE FRENTE
C16 EQU
MOVX A, @DPTR MOV DPTR, X9FFOH MOVX @DPTR,A
MOVX A. BDPTR <.I"" Y r l K , t ? C " l n
MOV DPTR, R 9 F F l H MOVX @ D P T R , A CLR C16
CPL RELOJ LCALL RETARDO2 CPL RELOJ LCALL X T A R D O i LCALL DEC16 ,JNR C16: C T r l OM RET
..-,, _",".. /J..". ..
CICLOM: LC?LL P.E?P.?.DO?
CICLOR1: MOV Ri, XO3H C I C L O R 1 1 : D J N Z R 2 , C I C L O R l l
n r m n n m i i , ."",7., n l x n ? l l , < L L n , \ L , w L . , > u " l \ L , V " d L 2
DJNZ R1, C I C L O R l KL I
RETARD02:MOV R1, #16H CICLOR2: MOV R2, #16H CICLOR12:DJNZ RZ.CICLOR12
D.TN7 ~1 rTrT.oR? RET
;DFCRFMFNTA 1.A VARTAR1.F n F 1 6 RTTS FN 9FFOH Y qFF1H D P T R , X 9 F F O H ; V E R I F I C A S I E S CERO Y A, @DPTR A, X O O H , SIGUE n P T R , P 9 F F l H A, BDPTR A, #flOH,SIGUE C 1 6 FTNRl fi C AC 8, #O nPTR, It9FFnH A, iaDPTR A, X 1 BDPTR,A "ECUIC-U F I N R 1 6
A, @DPTR DPTR, b 9 F F l H
;PRENDE B I T
AC A: n 1 BDPTR, A
P l . 0 ;bit fl r e l o i P 1 . l ;bit 1 sentido motor izquierdo P 1 . 2 ;bit 2 sentido motor derecho
;bl B I T > M l d U Y MULK = 1 AVANLA
2 6 H . 0 ; B I T DE CERO PARA 1 6 B I T S ; 1 S I VARIABLE ES CERO
; D I R 5 F O 0 PARTE BAJA DEL CONTADOR DE PASOS ; D I R 9 F 0 1 PARTE ALTA DEL CONTADOR DE PASOS
END
MUEVE: :RUTINA PARA MOVER EL MOTOR DE LA TRACCION
MOV DPTR, t9FOOH
A
Programas Finales
Programa del Autómata-Robot
OR@ OOOOB LJMF MAIN
ORG 0003H LJMP INTAD ;INTERRUPCION O0
; p3OG"a.A PRi;<C.pz
MAIN: MOV SCON.XO101001OB ; I N I C I A L I Z A LA TRANSMISION SERIAL
RECARGA PARA 300 BAUDS MOV T H 1 , XOF3H ; VALOR DE AUTO-
, "' .- . TMOD, f2QH . unno T)E , r .u~~-
SETB TR1 RECARGA
, . j _ L
MOV I E , #RSH iNiERRiiPcIONEj ;HABILITA LAS
MOV IP, XOOH
HASTA R E C I A I R R E I N I C I A LCALL ESPCOM ; V E R I F COMANDO NO SALE
CLR CAD L C A L i INIDATOS LCALL INICIAMD LCALL UtIMOV
RET
; I N I C I A L I Z A LOS VALORED DE X,Y,ANGULO y S I G N O DE X, Y INIDATOS:
MOV nPTR, it9FO7H MOV A, XOOH MOW @DPTR,A
E"":':: IE?TR, A INC DPTR
I N C DFTR MOVX @DPTR,A
W V X @DPPR,A INC DPTR
MOVX laDPTR, A I N C DPT?
MOVX @UPTR,A INC DPTR
CLR SX RET
C T n '." Ill
;~&LU-& f i5 D I $ , i m - L i u PARA ANI;ULO$, MENORES QUE iii
. C T R T T a ~ n ~ == 1 5rjM-n. ; S I BIT S U M == O RESTA
GRADOS DADO EN ACC , - - - - -. - .. .
ACT9OG:
- _l_. PUSH ACC l,C&L,L COS-,i.iO ; V X O R i G L T :io2 :MOV B. dOFFH ; D I V AB
MOV DPTR, #9FFlH ;MULT EL ANGULO POR
MOVX @DPTR,A MOV DPTR, X9F08H MOVX A, @DPTR XÜF DPT2, C9FFiH MOVX @DPTR,A
M O X A, ODPTR MOV DPTR, #9FF3H MOVX @DPTR, A
MOV A, X0 MOVX @D?TR,A LCALL MULT16
L?. "IST?.?!CI?.
Mnv DPTR; uqFnsw
m n m n l l V Y Y r l n , # : K O : :
SUMAR A X Y RERLIZA LA OP. MnV nPTR,49FFOH ;CARGA FT VAl.nR A
MOVX MOV ..-I," 1 I V " '. MOV MOVX MOV M U V X MOV ??"'.X MOV MOVX MOV %p".X MOV MOKL JNB LCALL
RESX: LChLL RESX1:
A X
T _In u-. IL
MOV
MOVX MCV MOVX MOV MOVX :<e< MOVX
POP
LC?TI. ; MOV ; DIV
ANGULO
i"lU"
LA DISTANCIA MOVX MOV MOVX MOV * A n > / " '" " '. MOV MCVX MOV MOVX MCiV
MOV MOVX LCALL
A, @DPTR DPTR, #9FF2H CDPTK,A
A, @DPTR DPTR, #9FFlH
VUPl'K, X DPTR, X9FF3H
DPTR, X9F04H
DPTR, #9FFOH @DPTR, A
A, BDPTR DPTR, #9F05H
DPTR. l9FFlH @DFTR,A SUMAX, RESX S W P 4ZSX1 RESTAP
..,.I ".. n nnovn
DPTR, X9FFOH ;DEVUELVE EL RESULTADO
A, @DPTR QPTR.' aeFndu @DPTR,A DPTR, U9FFlH A, ODPTR "" , # " - A r , , Vrln, *,I".,"
@ DPTR, A
ACC
I-.." ccwn
AB B, (IOFFH
"" " U F l K , X 3 r r L" ;;"rcLT EL ,?&GU.i;iO FOR
L D P T R , A DFTR, X9FO8H A, @DPTR DPTR, #9FF2H
A, @DFTR DFTR, 89F09H
DPTR, X9FF3H P D P i R , A DPTR, 89FFnH A, # O @DPTR,A MULT16
CY' ''l,.-. R n n l l n n
;CALCULA EL SENO DEL
bUMAK X Y , Y KLKLlLA LX UP. MOV DPTR, #9FFOH ;CARGA EL VALOR A
MOV DPTR, bOFF2H MOVX A, @DPTR
MOVX @DPTR,A MOV DPTR, X9FF1H MOVX A, @DPTR ~ " ~ ~ " . -_I" I^ urin,fyrrJn MOVX PDPTR.A
MOVX A, @DPTR MOV DPTR, #9F06H
MOV DPTR, X9FFOH ?1O'N C^DDTP,,?.
MOVX A, PDPTR MOV DPTR, #9F07H
MOV DPTR, X9FFlH HO-vX iaDPiR, A JNB SUMAY, RESY r c n u sl.w.w LJMP R E S Y l
RESY: LCALL RESTAP RESY1: MOV D?TR,#9FFOH ;DEVUELVE EL RESULTADO A Y
MOVX A,@DPTR
MOVX @DPTR, A MOV DPTR, #9F06H
MOV DPTR, #YFFlH MOVX A,(anPTR
6
MClV DFTR, ItQF07H MOVX @DPTR, A RET
ANGULO Y DISTANCIA ;ACTUALIZA LA POSICION YA S E T I E N E E L NUEVO
;RECORRIDA, SOLO S E CALCULA LA POSICION ACTPOS.
;DEBE CARGAR Y SUMAR EL NUEVO ANGULO ;DECIDE CUANTO AVANZAR
MOV DPTR, #9FO2H MOVX A, @DPTR MOV DPTR, 19FFOH MOW RnPTR,A
MOV DPTR, # 9 F 0 3 H MOVX A, @DPTR MOV DFTR, UBFFlH MOW PnPTR, 4 I N C DFTR MOV A, #O0 MOVX BDPTR, A
MOV A, X58H ; 9 1 GRADOS INC DPTR
MOVX @DPTR,A
,JNR MF,MA90 LCALL CMP16
:MFNOR QIIF 91 GRADOS
SETB SUMAX S E T 6 S W Y T.CAl.1, A C T 9 0 G
LJMP FINACPOS
O<=RNGULOc=90
MA90: MOV DPTR, X9FFZH MOV A, #O0 MOW RI)PTR,A
INC DPTR MOV A, #0B5H MOW @DPTR,A ;181 GRADOS T,CAT,T, CMPl F JNB ME,MA18O ;MENOR QUE 181 GRADOS
MOV DFTR, '49F03H MOW A, RnPTR
MOV 6 , A MOV A , # 1 0 0 CLR C CT,R 9 C
SUBB A , B CLR SUMAX SETB SWAY T.CA1.T. A C T 9 0 G
LJMP FINACPOS
91<=ANGULO<=180
MA180: MOV DPTR, X9FFZH MOV A, #O1 MOVX BnPTR, A INC DPTR MOV A.XOFH MOVX BDPTR,A ;271 GRADOS l.CAT.1. CMFl 6 JNB ME,MA2iO ;MENOR QUE 2 7 1 GRADOS
MOV DPTR, Y9F02H MOW A, RnPTR
MOV DPTR, #9FFOH MOVX @D?TR,A MOV DPTR, # 9 F 0 3 H MOW A,RI)FTR
MOV DPTR, X 9 F F l H MOVX @DPTR,A
MOV A,I tn
I N C DPTR
MOVX @DFTR, A MOV A, bOB4H MOVX @DPTR, A 1.CAT.T. R f S T A 1 h MOV DPTR, Y9FFIH MOVX A, @DPTR CLR SUMAX ri R SIMAY
181<=ANGULO<=270
; 160
LCALL ACT90G LJMP FINACFOS
MA270: MOV DPTR, X9FF2H MOV A , f l O l
MOVX @DPTR, A INC DPTR MOV A , % 6 8 H MOW @DPTR,A ;.3hO GRADOS
LCALL CMFlB JNB ME,FINACPOS ;MENOR QUE 360 GRADOS
271<-ANGULO<360
MOVX MOV
MOV MOVX MOT1 MOVX MOV MOVX MOV MOV MOVX MOV MOW LCALL
MOVX MOV
!;FTR
CLR LCALL
FINACPOS: RET
nPTR; YQFO?H A, @DPTR DPTR, #9FF2H BDPTR, h nFTR, i iQF07H A, @DPTR DFTR, 119FF3H BDPTR, A DFTR, t9FFOH A , X01
A, # 6 @ H PDPTR,A
PDFTR: A
RESTA16 DFTR, #9FFIH A, @DPTR SilMAX
ACT90G SWAY
: 360
:SE N E V E A LA POSICION INDICADA MOVERSEA:
LCALL INCHAR MOV DPTR, #9FFAH MOVX RDFTR, A
INC DPTR LCALL OUTCHAR
MOW QDPTR, 4 LCALL INCHAR
INC DPTR LCALL OUTCHAR LCALL INCHAR MOVX PnFTR, A
LCALL OUTCHAR INC DPTR
LCALL INCHAR MOW IanPTR, A LCALL OUTCHAR
MOV DPTR, #9FFAH MOW A,@DPTR
MOV DPTR, b9FOOH
MOVX @DPTR,A MOV DFTR, 1IQFFRH MOVX A, @DPTR MOV DPTR, 119F01H MOVX @DPTR,A S f T R MTXQ CLR MDER LCALL MUEVE
G I R A R
MClV DFTR; I Q F F T H MOVX A, @DPTR MOV DPTR, X9FOOH
AVANZAR MOW PnPTR,A
MOV DPTR, X9FFDH MOVX A, @D?TR MOV DPTR, X9FOlH MOW RDPTR, A
SETB MIZQ SETB MDER LCALL MUEVE R F T
ESPCOM: ; E S P E R A I N I C I O
Mnv A , Y O ~
LCALL TXSTATUS C 2 2 : ,WB R I . C P 2
LCALL INCHAR T, lNf . A, 11 ' * ' , r 7 7 MOV A , # ' * ' LCALL OUTCHAR LCALL INCHAR
r O M 1 P : r , M F A:ln:FRRTNT MOV A, Y10 LCALL TXSTATUS MOV A, #O0
LJMP FINCOMZ TCAT T. T Y S T A T I I S
E R R I N I : MOV A , # O l
T..lMF F,SPCOM LCALL TXERR
FINCOMP : RET
VERIFCOM:
; LEE VALORES PARA
; LEE VALORES PARA
;HARTTTTA RFCFFrTOEl
A
Mnv A,#o=, ;UARTT.TTA RFCFPCTON LCALL TXSTATUS MOV R 1 , XOFFH
Ci: MOV R2,#OFFH c11: ,TR R T ~ COMA
DJNZ R2,Cll
LJMP FINCOM DJNZ R 1 , C l
COMA: LCALL INCHAR CJNE A, # '+ ' , FINCOM MOV A,#'"' LCALL OUTCHAR LCALL INCHAR
COM1: CJNE MOV A , # 1 0
LCALL TXSTATUS MOV A,Uflf l LCALL TXSTATUS
A, #O,COM2
MOV SP.XO7 REGRESA A LA DIR OOOOH
;REINICIA LA PILA Y
MOV PUSH
RET PUSH
CnM7 : C,TNF MOV
MOV LCALL
LCALL LJMP
T.CAT.1.
COM3: CJNE MOV
MOV
LCALL
LCALL
LCALL
INDICADA
COM4: CJNE LJMP
Mnlr LCALL MOV
LCALL LCALL
LCALL
COMERR: MOV LJMP
FINCOM: MOV RECEPCION
T CAT,T
LCALL RFT
A, YO
ACC ACC
A, $1, r o w A, X10
A, #OB
VERPAUSA FINCOM
TXSTATUS
TXSTATI IS
A, # i n
A, # O 4
MOVERSEA ;SE MUEVE A LA POSICION
A, #2, COM4
TXSTATUS
TXSTATUS
FINCOM A, 63,CGMERR
TXSTATUS A, $1 o
A, #O2 TXSTATUS
LEEDIST :REINTENTA LEER DISTANCIAS REGRESA
A, #O1
A, #O6
FINCOM
TXFRR
;DESHABILITA
TXSTATUS
VERPAUSA: COMB JNB RI . COMB
;ESPERA A SER REINICIADO O QUE SE QUITE LA PAUSA
LCALL INCHAR CJNE A, P ' * ' , FINPAUSA MOV A,#'"' LCALL OUTCHAR LCALL INCHAR
COMlP: CJNE A, #O,COMZP
LCALL TXSTATUS MOV A,#10
MOV A,#OO LCALL TXSTATUS
MOV S P , # 0 7 ;REINICIA LA PILA Y
MOV A. #O PUSH ACC PUSH ACC RET
COM2P: CJNE A, #1,COM3P
RFGRFSA A T.A nTF flflnflH
MOV A,P10 LCALL TXSTATUS
MOV A , t f l q LCALL TXSTATUS
LJMP FINCOM COM3P: CJNE A, t2,COMlP
MOV A ; Y l n
MOV A, # O 4 LCALL TXSTATUS
l.CAT,T. MOVFASFA LJMP FINCOM
COMIP: CJNE A, I3,COMERRP MOV A,#lO
T,I-AI,I. TXSTATI IS MOV A.tO2 LCALL TXSTATUS
LCALL TXSTATUS
LCALL LEEDIST ;REINTENTA LEER DISTANCIAS 1.CAT.T. RFGRFSA
C0MERRP:MOV A, (01
FINPAUSA:MOV A, X06 RFCFPCTON
L M P FTNCOM
LCALL TXERR
LCALL TXSTATUS RET
; DESHABILITA
GIRAR ; ;RUTINA QUE DECIDE HCIA QUE ANGULO TENE QUE
;;PARA AVANZAR ;DETERMINA QUE MOVIMIENTO TIENE QUE HACERSE
DETMOV: MOV R3,#00H
ROBOT nM4: T C A l T . ATTDOS ; A C T I I A l T ~ A 1.A POSTCTON nFT.
LCALL TXPOS ;TWSMITE LA POSICION
LCALL VERIFCOM ;VERIFICA SI HAY COMRNDC
T,TAT.T. RFGRFSP. LCALL LEEDIST ;LEE DISTANCIA
LCALL PROM CL?E R5, #SO, DM1 ; SI CABE??? S,MP DM?
DM1: JC DM3 DMZ: LCALL DETMM ;;; ;
MOV R3, #OOH T , M P M 4
DM3: CJNE R3,XOB.DMS
VER: ;LCALL VERIFCOM ;VERIFICA SI SE HA RECIBIDO COMANDO
MOV R3, #OOH LJMP DM4 ;SJMP VER
HASTA RFCTRTR ;NO SE PUEDE MOVER mi
;NUEVO CAOMNDO ;NO LLAMA NI A MENOR Y NI DM5: INC R3
A MAYOR SETB MIZQ :GIRA A LA DERECHA
MOV DPTR, t5FOOH CLR MDER
PASOS A MOVERSE (45 GRADOS1 MnV A, YOCOH MOVX @DPTR,A INC DPTR MOV A,#OOH M O W PDPTR, A
MOV MOV DPTR, R9FOBH
A, #O0
M U G @DPTR, A
MOVX @DPTR, A I NC DPTR
LCALL MUEVE
DISTACIA MOVIDA
MOV DPTR, #9FFOH ANGULO DE LA POSICION
MOV A, # O 0 MOVX ODPTR,A INC DPTR MOV A, i t?nU
MOVX @DPTR,A LCALL SUMAG
LTMP DM4 STOPMOV: RET
;CARGAR EL No DE
; CARGA O A LA
;SUMA 45 GRADOS AL
EN 5F00 Y 5F01 CONVAP: MOV B, 82 de 2 bytes se indexa 2
MI11 AR
MOV Ri, A MOVC A, @AtDPTR MGV R0,A MOV A ? R l
MOVC A. BAtDPTR INC A
MOV R1,A
:TONVTFRTF FI. V A N R DF ACT A PASOS 1 . 0 GIIARnA
; Corno la t a b l a es
; "s.rsq
; SF. ciirqn e1 numero de pasos obtenidos de
MOV DPTR.19FOOH ; l a t a b l a MOV A.Ri
signifiravivo AST FSTA RTFN RO Y R 1 ; Menos
A 8
M O W ROPTR, A INC DPTR MOV A,RO MOVX @DPTR, A R F T
PROM:
; Mas signlficativo CPROM:
;CONVIERTE PASOS DE 9FOO Y 9FO1 A DISTANCIA NADA :
RET P22 : PMIN: SCPROM:
CNVPDIS:
;DETERMINA HACIA ADONDE TIENE QUR MOVERSE OFT": MOV OPTR, $9FOOH
MOV MOV MOV
MOVX C,TNF.
SJMP JC
INC INC
D J N Z RET
O P T R , XOF.OOH R5, #OOH 8 , WlOl
A, @ D P T R A, XRf lH,N&nA
P22
R5 PMIN
DPTR 8, C PROM
MOV RO, UOFFH MOV R1, #OFFH LCALL MAYOR T CAT T MFNOR MOV A,RO ADD A,R1 MOV B,#2
CJNE A, 1132H. NOEQ DIV AB
SETB MIZQ SETB MDER
DERECHO
PARA UNA VUELTA MOV DPTR, #9FOOH
MOV A, #OB8H M O W @ n P T R , A INC DPTR MOV A, Y O l H MOVX @DPTR,A
LCALL MUEVE SJMP DETGIRAZ
NOEQ: JC DETMIN DETMAX: MU$ B,A
MOV A,#180 SUBE A,B S F T R MT70 CLR MDER
IZQUIERDA
DETMIN: CLR MIZQ DERECHA
DETGIW\:MOV DPTR, #TABLA PASOS
SJMP DETGIRA
SETB MDER
A PA.SOS LCALL CONVAP
; I G U m AVANZA
;CARGA No DE PASOS
;PONE SENTIDO A LA
:PONESENTIDO A LA
;CONVIERTE 'A' A
;CONVIERTE ACC
;;DEBE SUMAR O RESTAR AL ANGULO
DETGI RA2 : LCALL MUEVE
RET
MAYOR QUE a0 ; nF.VlIFT.VF. l .A POSTCTON OFI , PRTMFR ANGII1.O
MAYOR: MOVX A,@DPTR
S.TMP 1,OWMAX CJNE A, #ROH,NEQMAX
NEQMAX: MOV RO,DPL ;SI FUE MAYOR QUE 80
LOWMAX: INC DPTR ;SI FUE MENOR IGUAL QUE 80 SJMP E'MAYOR
MOV A,IWT. CJNE A, #66H,MAX2 SJMP EWAYOR ;IGUAL
MAX2: ;INC DPTR
FMAYOR: RET .JMP MAYOR
MENOR QUE 6 0 MENOR: MOVX A.@DPTR
:~F,VlIFl.VF 1.A POSTCTON OEl, PRlMRR ANGlI1.O
CJNE A, XBOH,NEQMIN SJMP LOWMIN
NEQMIN: INC DPTR ;SI FUE MAYOR IGUAL QUE 8 0 MOV A,DPL CJNE A, #66H,MIN2 S.WP M F N O R ; 1C.IIPIT.
MIN2: ;INC DPTR
LOWMIN: MOV R1,DPL ;SI RIE MENOR QUE 8 0
FMENOR: RET
JMP MENOR
SJMP MRNOR
X O H ;OBTIENE CUANTOS NUMEROS FUERON MAYORES QUE
;RUTINA DE INTERRUPCION DEL A/D INTAD: PUSH DPL
PUSH DPH Mnv nPTR, m m n m MOVX A, @DPTR MOV DPTR, #9FFZH MOVX @DPTR,A
POP DPL POP DPH
KOV IE, Y85H SETB CAD
RET1
;HACE QUE EL A/D EMPIEZE A CONVERTIR INIAD: MOV DPTR, XOAOOOH CTNTAT): ,TNR P1 . 3 : C T N T A n CINIADZ: JB P1.3,CINIADZ
CINIAD4:DJNZ R7,CINIAD4
CINIAD?.: JNE CAD.CINIAD3 FINAD: RET
MOV R?, #21H ;RETARDO
MOVX laT)PTR, A
; JE CAD. FINAD ;MOV A,#OÜ ; LCALL TXERR
;MOV nPTR, $ 9 F F ? H
;MOV A, #ÜFFH ;MOVX @DPTR,A
;ERROR €N EL ADC
;LEE LAS DISTANCIAS Y LAS GUARDA A PARTIR DE UFOOH LEED1ST:MOV A, YO2
LCALL TXSTATUS MOV R4, X100 ;IO0 pasos inc ~ 1.8
qrarlos
CICD1ST:CLR CAD MOV DPTR, lt9EOOH
PUSH DPL PUSH DPH
LCALL INIAD PARA CONVIERIR CON EL A/D
;LLAMA A LA RUTINA
MOV DPTR,#9FFZH ;LEE VALOR DEL A/D
POP DPH ;GUARDA LO CONVERTIDO MOVX A, @OPTR
EN LA TABLA POP DPL M O W BDPTR,A LCALL DECMD
LCALL RETARDO3 INC DPTR
Ts;M7, R4,CTCnTST
MOV A, #O7 LCALL TXSTATUS ;TRANSMITE 100 DATOS r.rar.r. T x r x on ; RET
;INICIALIZA Y REGRESA MOTOR QUE MIDE n T S T A N C T A S A ANC-0
INICIAMD: CLR P1.4 PARA EL
;INICIA LOS VALORES
DISTANCIAS CLR P1.5 ;MOTOR QUE MIDE
SETB P1.6 SETB Pl.? MOV DPTR, #'?FFOH MOV A , Y 9 H
MOVX ibDPTR, A
MOV A , UOOH MOV DPTR, I9FFIH
MOV R7,XlOl ;#lo1 M O W B n P T R ; A
LCALL RETARDO3 DJN7. R7,CTCI.OMn
C1CLOMD:LCALL INCMD
'4 o
ANGULO A CERO MOV DPTR,$QFO?H ;PONF VA1,OR DFT.
MOV A,#OO MOVX @DPTR,A RET
; PARTE BAJA
DISTANCIAS :RIITTNA PARA TNCRCMFNTAR TIN PASO FT. MOTOR QlIF MTnF
INCMD: MOV A,#O MOV C , P l . i Mnv Acr. 7 r MOV C,P1.6 MOV ACC.6.C MOV C , P 1 . 5 MOV A V . 5, C MOV C . P l . 4 MOV ACC . 4 , C CLR c R1.r A CJNE A , # l z a , M m
MOT1: CJNE A, #32,MOT2
MOTZ: MOV C , P 1 . 0
SETB ACC.4
S F T R A C C . ~
MOV C , P 1 . 1 MOV ACC.0.C
MOV C . P l . 2 MOV A r r . 1 , C
MOV ACC . 2 , C MOV C . P l . 3 MOV ACC. 3 , C
MOV P 1 , A RET
;REGRESA A SU POSICION ORIGINAL EL MOTOR ?.NGULO=O REGRESA:MOV R7, #lo1 CTCT.OR: 1,CAT.l TNCMn
LCALL RETARDO3 DJNZ R 7 , C I C L O R RET
DISTANCIAS ;RUTINA PARA DECREMENTAR UN PASO EL MOTOR QUE MIDE
ncrMn: Mnv A , X O
MOV ACC.7,C MOV C . P l . 7
MOV C , P 1 . 6
MOV C. P 1 . 5 MOV ACC. 5 , C MOV C,P1 .4
RRC A CLR c
CJNE A. 1 2 4 , M O T l A
Mnv acr. 6,c
MOV ~ r r . 4 : ~
SFTR Arr.7 MOTlA: CJNE A , % 7 i , M O T Z A
MOTZA: MOV C , P l . O SETB ACC.7
MOV r\cc.n,c MOV C , P 1 . 1 MOV ACC . 1 , C MOV C . P l . 2 MOV ACC.?,C
MOV ACC.3,C MOV C. P 2 . 3
MOV P 1 , A RFT
WdEVE: :RUTINA PARA MOVER E L MOTOR DE LA TRACCION
MOV A, 1 0 4 LCALL TXSTATUS MOV I?PTR, $9FflflH MOVX A, @DPTR MOV DPTR, R9FFOH MOVX BDPTR,A MOV n P T R , 8 9 F n l H MOVX A, @DPTR MOV DPTR, #9FFlH MOVX @ D P T R , A CT,R C1 6
CICLOM: LCALL RETARDO2 CPL RELOJ
CPT. RF1.O.T LCALL RETARD02
T rpi1.l RFTARnOl LCALL DECl6
RET JNB C16,CICLOM
RETARDO1:MOV R1, #03H CICLOR1: MOV R 2 , 1 0 3 H r T r T . n R i 1 : n m 7 R ? , r T r T , n R 1 1
RET D J N Z R1, C I C L O R l
RFTARn0P:MOV U 1 $1 f i H CICLORZ: MOV R2, #16H C I C L O R l 2 : D J N Z R 2 , C I C L O R l Z
DJNZ Rl.CiCLOR2 RFT
RETARD03:MOV R 1 , # 3 5 H ; 2 0 CICLOR3: MOV R 2 . 1 3 5 H ;20 rTrT.nRi.?:n.TN7, R ? , T T C T . O R I ~
DJNZ R1, CICLOR3 RET
;SUMA AL ANGULO E L DATO EN 9FFOH Y 9 F F 1 H Y VALIDA RESTAG: PUSH PSW
rm w 1 S E T B RSO
MOV DPTR, t9FOZH MOVX MOV
A; laDPTR D P T R , # 9 F F i H ; C O P I A E L VALOR DEL
ANGULO PARA SUMARSE MOVX BDPTR, A
DEBE TENER LO QUE S E L E SUMARA ;EN 9FFO Y 9 F F 1
MOV MOVX MOV
LCALL MOW
T.iAT,T, .m8
MOV MOVX MOV M O W MOV MOVX MOV MOW
MOV MO\i Mnvx INC MOV MOVX T CA1,l. LJMP
R E S l : MOV TGIJAT.FS
MOVX MOV
MOVX I NC
M O V INC MOVX MOV
MOVX INC
MOV
MOV MOV MOVX ThlC
MOV MOVX INC MOV
MOV%
MOV INC
ww LCALL
FTNRFS1 .MOV
A, @DPTR DPTR, I9FOJH
DPTR, #9FF3H PnPTR,A
CMPl6
MA, R E S l R F S T A l h :A > R DPTR, # 9 € F O H A, @DPTR DPTR, #9FFZH
DPTR, 1 9 F F l H A, @DPTR DPTR, #9FF3H QDPTR,A
DPTR, #9FFOH A , #O1 PDPTR, A DPTR A, 168H
RESTA1 6 @DPTR,A
F I N R E S l
PnPTa, A
DPTR, #9FFOH
A, BDPTR RO,A
A, (al)PTR DPTR
R1, A DPTR A, @DPTR
DPTR R': A
A, @DPTR R 3 , A
A. R2 DPTR, U9FFOH
@DPTR,A
A, R3 @DPTR, A DPTR
n P T a
A: un $DPTR,A DPTR A, R1 laOPTR,A RESTA16
nPTR. Y9FF'OH
; A < B E
A
MOV DP'IR, # 9 F 0 2 H MOVX ODPTR,A ;COLOCA EL VALOR
RESULTANTE DEL ANGULO MOV [?PTR, t 9 F F 1 H MOVX A, FDPTR MOV DPTR, Y9F03H MOVX @DPTR,A
RET POP PSW
SUMAG: MOV MOVX A,PnPTR
DPTR, X9FC2H
MOV D P T R r # 9 F F 2 H ; C O P I A E L VALOR DEL ANGULO PARA SUMARSE
MOVX FDPTR,A DEBE TENER LO QUE S E L E SUMARA
;EN 9FFO Y 9FF1
MOVX A. @DPTR MOV DPTR, U9FO3H
MOVX IdnPTR, A MOV DPTR, # 9 F F 3 H
LCALL SUMA16
MOV ~ ; t n l MOV DPTR, #9FF2H
MOVX ODPTR, A PARA COMPARAR
INC DPTR MOV A,rth;RH MOVX ODPTR,A
;CARGA 359
LCALL M P 1 6
J B ME, F I N S G JNB MA,EQSG ; S E ?'GO DE 361
MOV A , d O l MOV DPTR, 119FF2H
PARA RESTARLE MOVX ODPTR, A ;CARGA 3 6 0
I NC DPTR MOL' A:#6RH MOVX @DPTR,A
LCALL RESTA16 LJMP F I N S G
EQSG: MOV ANGULO = A 3 6 0
DPTR, X9F02H
MOV MOVX @nPTR, A
A, #O
I N C DPTR MOVX @DPTR,A L J M P F i N S G 2
;PONE A CERO
FINSG:
FINSGZ :
Y 9 F F l H
MOV DPTR, X9FFCH ;REGRESA EL VALOR DEL ANGULO MOVX A, @DPTR MOV MOVX @DPTR, A MO? MOVX A, @DPTR
DPTR, XYFFlH
MOVX laDPTR, A RET
nPTR, #I)FO?H
MOV nPTR, 1I9FO7H
: TNCRF.MF.NTA 1,A VARTART.F, nF, 1 C. RTTS F,N qFF"H
INC16: CLR MOV
MOVX MOV
ADD J C MOVX LJMP
1NCHIGH:MOV MOVX C1.R ADD MOVX
F I N S 1 6 : RET
O C H 6 , x0
A, l@DPTR n P T R , # 9 F F n H
A, X 1 INCHIGH PnPTR, A
DPTR, # 9 F F 1 H F I N S l G
A, @DPTR
A, #l OOH
@DPTR,A
Y 9 F F l H
DEC16: MOV DPTR,#9FFOH ;VERIFICA S I ES CERO Y MOVX A, ODPTR ; PRENDE B I T
MOV n P T R , X 9 F F l H CJNE A. UOOH, S I G U E
:DECREMENTA LA VARIABLE DE 1 6 B I T S EN 9FFOH
:PRF.NDF R T T m 6
STGIIF: <
MOW C J N E
LJMP SETB
CLR MOV MOV MOW SUBE
'1.R c
a, P ~ P T R A, X O O H , SIGUE C 1 6 F i N R 1 6
AC B, x0
A,BDPTR DPTR, X9FFOH
A. #l MOVX @DPTR,A JC DECHIGH LTMP PTNR1 C.
DECH1GH:MOV DPTR, X 9 F F i H MOVX A, ODPTR
CT.R Al' CLR C
SUBB A , # l MOVX @DPTR, A
F I N R 1 6 : RET
9FFOH Y 9FFlH ;MULTIPLICA DOS VARIABLES DE 1 6 B I T S A =
; B = 9 F F 2 H Y 9FF3H , RESULTADO EN 9FFOH Y 9FFOH MULT16: PUSH PSW
SETB RS1 SETB R S O
MOVX A, @DPTR MOV nPTR, YOFFDH
MOV RC,A
MOVX A;PnPTR INC DPTR
MÜV R 1 , A I N C DPTR MOVX A, ODPTR MOV R?, A
MÜVX A, @DPTR MO? R3,A 1 rAT.7. MlIT.TR
INC DPTR
MOV A , R ~ MOV R6 ,A MOV A , R 5 MOV R l , A MOV A,R2 MOV R3, A
MOV nPTR, #qFFOH LCALL MULTE
MOV A , R 5 MOVX @DPTR,A I N C DPTR
MOVX laDPTR, A INC DPTR MOV A.RG MOVX IdnPTR, A
MOV A.R7 INC DPTR
MOVX @DPTR,A T.CAl.1. STIMAl fi POP PSW RET
Mnv ~ : # n n
MULTE: MOV A , R 1 MOV B , R 3 MUL AB MOV R S , A MOV R4, B MOV A,RO MOV B,R3
MOV R 4 , A ADD A,R4
MOV R 3 , B RFT
; m i l i f i ? I i ? a v a l n r ~ r d e R h i t s para MIIT.Tlh
Mil i . AR
9 F F 1 H ;SUMA DOS VARIABLES DE 1 6 B I T S A = 9FFOH y
;B = 9FF2H Y 9FF3H , RESULTADO EN PFFOH y 9 F F l H SUMA16: CLR C
MOV DPTR. U9FFlH ;SUMA 9FFO,9FF1 CON CLR AC
MOVX A, @DPTR
MOV DPTR, U9FF3H MOV R?A
MOVX A, @DPTR ADD A,B MOV n P T R , X 9 F F l H
9PF2.9FF3
A 11
MOV DPTR, X9FFOH MOW lanPTR, A
MOW. A, @DPTR MOV B. A
MGVX A, @DPTR ADDC A , B MOV DPTR, B9FFOH MOW RnPTR:A RET
;RESTA DOS VARIABLES DE 1 6 B I T S A = 9FFoH y
= 9FF2H Y 5 F F 3 H , RESULTADO EN 9FFOH y
MOV nPTR, *BFF7H
VFF1 H
5 F F l H RESTA15:CLR C
T1.R AY
MENOS 9 F F 2 . 9 F F 3 MOV GPTR, d 9 F F 3 H ; R E S T A 9 F F O , 5 F F l
MOVX X, @DPTR VFFO, YFF1
; RESULTDO EN
MGV B,A
MOi'X A. @DPTR MOV DPTR, X 9 F F l H
SIJRR A , R MOV D P T R , # 9 F F l H MOVX PDPTR,A MOV DPTR, #9FFZH
MGV B,A MOVX Al PnPTR
MOVX A, @DPTR MGV DPTR, #9FFOH
SURR A , R MOV DPTR, X9FFOH MOVX PDPTR, A RET
Y 9 F F l H ;CGMPAiL4 30s VARIABLES DE 1 6 BITS A = ~ F F O H
;E = 9 F F 2 H Y 5 F F 3 H
; A>B ; RESULTADOS : m ME
1 O : A<R o 1 ; A-B O O
1 ; xxxxxxx 1
SFTR RSl SETB RSO MOV DPTR, It9FFOH Moa A. @DPTR MOV RO,A
MOVX A, @DPTR INC DPTR
MOV R1 ,A
MOVX A, @DPTR INC DPTR
MGV RZ, A
MOVX A, POPTR I N C DPTR
MOV R 3 , A
CLR MA CLR C
CLR ME
CMP16: PUSH PSW
MGV A, RO CJNE A, OIAH, NGEQl ; R2 EN EL BANCO 3 =
1 A MOV A,R1 CJNE A. OlBH,NGEQZ ; R 3 EN EL BANCO 3 =
1B SJXP FCMF16
NOFQ?: .lC MFNOR?
CLR ME SETB MA
MFNOR?: C1.R MA S J M P FCMP16
SETB ME S J M P FCMP16
NOE@l: JC MENOR1 SF.TR MA CLR ME SJMP FCMP16
MENGRl: CLR MA
FCMP16: POP psw SETÜ ME
RET
;PARA LA PGSICIGN X o Y :SUMA AL VALOR EN RFFOH Y 9 F F l H MAS 9FFZH Y ~ F F ~ H TOMANDO FN
:CIJRNTA F.T. STGNO nFT. PRTMFRO CN FT, RTT *SIC.NO#
SUMAP: PUSH PsW ;RESULTADO EN BFFOH Y 9 F F l H
SETB R S 1 S F T R R S n
JB SIGN0,SUMAPl LCALL SUMA16
.%MAP1 : T.CA1.T CMPl 6 SJXP F I N S P
JB ME,SUMAP3
SETÜ SIGNO T,CAl.T, SlJMA1 fi LJMP F I N S P
JNB MA,sUMApz ;MAYOR
s u M A P 2 : C L R S I G N O ; I G U m MOV DPTR, # 9 F F 4 H MOV A. $ 0 MGVL @ C P T R , A
MOVX @DFTR,A INC DPTR
T.,lMP FTNSP SUMAP3: CLR SIGNO ;MENOR
MGV DPTR, #9FFOH ; INTERCAMBIA OPERANDOS MGVX A, @DPTR MOV Rn: E
MGVX INC
MO'J
MOVX 1 NC
MOV
MOVX INC
MGV MGV MOV MOW
MGV INC
MOVX
MOV T NT
MOVX
MOV INC
MOVX LCALL
MOW MGV MOVX MGV MOW MOV MOVX
RET POP
FINSF: MGV
A, @DPTR DPTR
R1 ,A DPTR A, @DPTR RZ,A DPTR
R 3 , A A, PnPTR
A, R2 DPTR, 19FFOH
DPTR PnPTR,A
A, R 3 @DPTR,A
A, RO nPTR
DPTR @DPTR,A
A , R1 @DPTR,A RESTA16
DPTR, 6 9 F F 4 H A, PnPTR DFTR, X9FFOH A, @DPTR DPTR, 6 9 F F 5 H A , PnPTR
A, @DPTR DPTR, #5FFlH
PSW
;PARA LA PGSICION X o Y :RESTA AT. VAT.OR FN 9FFOH Y 9 F F l H MFIUOS 9FFPH Y ~ F F ~ H TOMANDO EN ;CUENTA EL SIGNO DEL PRIMERO EN E L B I T 'SIGNO'
RESTAP: PUSH PSW ;RESULTADO EN 9FF4H Y 9FF5H
S E T B R S 1 SETB RSO
T.rAT.1. SIIMA1 f i JNB SIGNO, RESTAPl
LJMP FINRESP RESTAP1:LCALL CMP16
JB ME, RESTAP3
LCALL RESTA16 %lNR MA, RCSTAP?
LJMP FINRESP ;MAYOR
RESTAPZ : CLR SIGNO MOV DPTR, 1YFF4H
; IGLIAL
MGV A,#O M o b 3 @DPTR,A
M O W @I)PTR.A I N C DPTR
RESTAP3:SETB SIGNO
OPERANDOS
LJMP FINRESP
MOV DPTR, B5FFOH ; INTERCAMBIA ;MENOR
MOVX A, @DPTR MGV RO, A INC DPTR
MGV R1 ,A MOW A, @nPTR
INC DPTR MOVX A, @DPTR MOV R7, A
A 12
I N C DPTR MOVX A, PDPTR MOV R3,A MGV DFTR, X9FFOH MOV R,R7 MO'JX ODPTR,A INC DPTR MOV A , R 3 MOVX P n P T R , A INC DPTR
MGVX @DPTR,A MOV A,RO
INC DFTR MOV A,R1 MOVX @DFTR,A ;;;; LCALL RESTA1 6
FTNRFSP:MnV nPTR; l tqFF4H MOVX A, @DPTR MOV DPTR, #9FFOH MOVX A, @DPTR MOV nPTR: lt9FFTH MOVX A, PDPTR MOV DPTR, I 9 F F l H MGbX A, PDPTR POP PSW RET
GRAnOS
'10) SENO: MOV DPTR. YTSEN
;CALCULA EL SENO DEL ANGULO DADO EN ACC SOLO 0-90
;DEWELVE RESULTADO EN A ( E L RESULTADO ESTA MULT
MOVr R , P A t n P T R RET
;CALCULA EL COSENO DEL ANGULO DADO EN ACC SOLO O-
;DEVUELVE RESULTADO EN A ( E L RESULTADO ESTA VULT sn mnnos
COSENO: MOV DPTR, XTSEN *lo)
MOV R , R MOV A , # 9 Q CLR C SUBB A , B
REP M n v r a , @ a t n P T R
;TRANSMITE CARACTER OllTrHAR!,T!JR T T , $ ; FSPFRAR A TRANSMTSOR L I S T O
MOV SBUF,A ; TRANSMITIR CLR T I ; LIMPIAR LA BANDERA
RET
OUTSTR: CLR A ;TRANSMITE CADENA, DEBE TERMINAR EN O
M n v r A , a a t n P T R J Z OUTST2
; TOMAR IJN RYTF ; Si ES EL IJLTIMO,
F I N LCALL GUTCHAR ; SI NO, ENVIARLO I N C DPTR SJMP OUTSTR
OUTSTP : RET
INCHAR: JNB R I , S ;T.FF CliRACTCR
CLR R I MOV A,SBUF ; LECTURA RFT
TERMINAR EN O TXCAnFNR!MOV A , i f ' $ '
;TRANSMITE LA CADENA APUNTADA POR DPTR, DEBE
LCALL OUTCHAR LCALL OUTSTR MOV A , # ' $ ' T r A T T. OTTTCHAR RET
FOR DPTR ;TRANSMITE EL NUMERO DE 1 6 B I T S QUE ESTE APUNTADO
TXNUM: M W A , # ' # '
MOVX A, PDPTR LCALL OUTCHAR
1.CAl;I. OllTCHRR
MOVX A. PDPTR I N C DPTR
LCALL OUTCHAR RFT
TXSTATUS: PIJSH ACC ;TRANSMITE EL CODIGO DE STATUS DADO EN ACC
MOV A , Y ' @ '
LCALL OUTCHAR POP ACC LCALL OUTCHAR RET
T'XERR: PUSH ACC ; T W S M I T E CODIGC DE ERROR DADO EN ACC
MOV A , # ' ! 1,CRT. l . DllTrHAR
LCALL OUTCHAR POP ACC
RET
;TRANSMITE PGSICION XL9F04H. 9 F 0 5 H ) , Y ( 9 F 0 6 H , 9FG7H), ;SINGOS DE X.0 Y . l (EN UN BYTE,PRIMEROS DOS B I T S ) ,
ANG(9FOZH, 9FO3H) TXPOSr MOV A, d ' P '
MOV DPTR, # 9 F @ 4 H LCALL OUTCHAR
MOVX A, @DPTR 1.TAT.T. OllTTHRR INC DPTR MOVX A, @DPTR LCALL OUTCHAR
MGVX A, PDPTR INC DPTR
LCALL GUTCHAR
MOVX A < @nPTR I N C DFTR
MOV DPTR, #9F02H LCALL OUTCHAR
MOVX A, PDPTR l.CRT,l. OIJTCHPR
MOW. A, @DPTR I N 2 DFTR
LCALL OUTCHAR
MOV C. SX
MGV C,SY MOV ACC.0 .C
MOV ACT. 1 , r LCALL OUTCHAR RET
Mnv A ; f n n H
iTRANSMTTC DTSTANCTA IqFFnH,. 9 P F l H ) Y ANGULO L9FF2H, 9 F F 3 H ) TXDATO: MGV A , X ' D '
LCALL OUTCHAR MOVX A, OnPTR LCALL GUTCHAR INC DPTR MOVX A, @DPTR LCALL OUTCHAR
MOVX A, PDPTR INC DFTR
LCALL OUTCHAR TNC nPTR MOTA A, e n p m LCALL GUTCHAR RET
TXD100: MOV A,R4 ;TRANSMITE 100 DATOS
PUSH ACC MOV R4, i i l n l
MOV DPTR, K9FFCH MOV A, X0 MOVX PDPTR, A MOV DPTR, 09FFnH MOV A, #O MOVX @DFTR,A
MOVX F n P T R ; n INC DPTR
MOVX @DPTR,A INC DPTR
MOV INC DPTR
MOVX PDPTR, A A: # l R
MGV PUSH DPL
DPTR, #9EOOH
PUSH DPH TXD1: MOVX A, @DPTR TIENE EL DATO DE LA TABLA
MOV MOVX P n P T R , A
DPTR, 49FFDH
MOV DPTR, X9FFOH M O W A, PDPTR MDV n P T R , 0 9 F F F H MOVX PDPTR,A MOV DPTR, #9F€lH MOVX A. @DPTR MDV l lPTR, XQFFFH
;A
A 13
MOLT PDPTR, A
MOV DPTR, X9FFCH LCALL TXDATO T,CAT,i, RF,TARDO?
LCALL SUMA16 POP POP
DPH DPL
PUSH DPL TNC DPTR
PUSH DPH DJNZ R4, TXDl
POP POP
DFH DPT.
POP ACC MOV R4 ,A
RET
CADFNAOO: nR 'TNTCTA1,TZANW STSTFMA. ' , O
CADENADZ: DE 'EN MOVIMIENTO. ',O CADENAOI: DB 'ESTOY ATRAPADO ! ! ! I , O
CADENAOS: DE 'YA LLEGE! ! I , O CAnFNAO4: DR 'QIIF MAS HAGO! ' , O COMREC: DE 'COMANDO RECIBIDO' ,O
MIZQ EQU P 1 . l ;bit 1 sent ido motor izquierdo RELOJ EQU P1.0 ; b l t O reioj
MDER EQU P 1 . 2 ; b i t 2 sentido motor derecho
AVANZA DE FRENTE ENCEN EQU P 1 . 3
C l h FQN 7FH.0 :RTT DF CFRO PARA 1 h R T T S
CAD EQU 2 6 H . 1 :BANDERA DE RESULTADO L I S T O ; I SI VARIABLE ES CERO
DEL A/D
:ST R T T S M T Z Q Y MnER = 1
;BANDERAS DE RESULTADO DE COMPARACION DE
MA EQU 26H.2 NUMEROS DE 1 6 BITS
;NUMERO DE 1 6 B I T S MAYOR MF FQU 76H.3 :NIIMFRO DF 1 6 RTTS MFNOR
;DIRECCION AOOOH * CONVERTIDOR A/D tDIR .EKION RFFZH = PEGI'TRO DE RETilL.TPLK DEL a / D
;DIR 9FOO PARTE BAJA DEL CONTADOR DE PASOS ; D I R 9 F O 1 PARTE ALTA DEL CONTADOR DE PASOS
SUMA, RESTA, ;DIR 9 F F 0 PARTE BAJA DE VARIABLE DE 1 6 B I T S => PARA
MIIT,T,nTV Y COMP. ; D I R 9 F F 1 PARTE ALTA DE VARIABLE DE i 6 B I T S =>
; D I R 9FF2 ; D I R 9 F F 3 ; D I R 9 F F 4 :nTR 9 6 6 5
;DIR 9FO2 PARTE BAJA DEL ANGULO ; D I R 9 F 0 3 FARTE ALTA DEL ANGULO
; D I R 9 F 0 5 PARTE ALTA DE POSICION X :nTR 9 F 0 4 PARTF RAJA n F P O S T r T O N X
SX EQU 26H.4 ;S IGNO DE POSICION X
:nTR 9Ffl6 PARTF RA,TA n F POSTCTON Y
SY EQU 26H.5 ;S IGNO DE POSICION Y ; D I R 9 F 0 7 PARTE ALTA DE POSICION Y
ROBOT : D T R 9FOR PARTF RA,TA nF, T,A nTSTANCTA QlJF S F MOVTO FT,
; D I R 9 F O 9 PARTE ALTA DE LA DISTANCIA QUE S E MOVIO EL ROBOT
;nTR 9FFAH
; D I R 9 F F C H ; D I R 5 F F B H DATOS DE ANGULO A MOVERSE EN PASOS
;DIR 9FFDH DATOS DE DISTANCIA A MOVERSE EN PASOS
STGNO Fa l l O6H.6 :STGNO PRRA HACFR i,AS OPERACIONES DE SUMA Y RESTA i D I R 9EOOH GUARDA LOS 100 DATOS DE DISTANCIAS
SINAX FQII 97H.0 ; R T T PARA SARFR ,ST S F SUMA O RESTA A LA POSICION X SUMAY EQU 27H.1 ; B I T PARA SABER SI S E SUMA O RESTA A LA POSICION Y ::ST FT, RTT == 1 SE StMA ; ; S I E L B I T == O S E RESTA
GRADOS i l W E L T A DE LA LLANTA CORRESPONDE A 01B8H Y 90
;180 GRADOS CORRESPONDE A 0 3 7 0 H : 4 1 GRanOS CORRWPONDR A OOF.0H
TSEN: DB O, 1,3,5,6,8,10,12,13,15,1?,19,20,22.24,25,27,29,30
3 7 , 3 4 , . 3 5 : 3 7 , 3 9 , 4 0 , 4 7 , 4 3 , 4 5 : 4 6 , 4 8 , 4 9 , 5 1 , 5 7 , 5 4 , 5 s , 57 DB
58,6O,61,62,64,65,66,68,69,?0,71,13,74.75,76.77,78
7 9 , R O , R l , R ' , U 3 , R 4 , R 5 , R h ~ ~ 7 , R R ~ R q ~ R q , 9 ~ , 9 l ~ q ? ~ q O ~ 9 3
DB
DE
DB 9 3 , 9 4 , 9 5 , 9 5 , 9 6 , 9 6 , 9 ? , 9?,97,98,98,98,99,99,99,99,95
DB 9 9 , 9 9 , 9 9 , 1 0 0
; COMANDOS * ' ;O0 - R E I N I C I A ROBOT ; O1 - PAUSE
;O3 - RECUPERACION DE DATOS ;O2 - MOVER A
;O0 - FALLO EN EL ADC ; FRRORFS 1 ! 1
; O 1 - ERROR EN COMANDO :10 - NO HAY COMUNICACION CON EL ROBOT
;ESTADO DEL SISTEMA ' t u
;O0 - REINICIANDO SISTEMA ;ESTADOS DEL ROBOT
: O 1 - TNACTTVO ;O2 - EXPLORANDO ;O3 - OCUPADO ;O4 - MOVIENDOSE : O 5 - FSFCRANnO COMANM ;O6 - DESHABILITA COMANDO
;O8 - EN PAUSA ; O ? - TRANSMITIENDO DATOS
:O9 - CONTTNIIANnO
;IO - COMANDO RECIBIDO ;MENSAJES DEL ROBOT
: RF,SPtIF,STAS nET. ROROT
; POR PC :COMANDO ENVIADO RESPUESTA DEL
00 O0 O 1 01 O2 u4 03 o 2
ROBOT (ESTADO)
m
A 14
#include <bios.h>
#include <etdio.h> #include <canm.h>
tlnclude <mouae.h> #include <stdlib.h>
*inrlor?e <qTCfirUT b'
#define COM 1 #define T"Z ldefine FALSE O Xdetme N 1 0 0 #define DATA-READY 0x100 #define TIME-OUT OX8000 *defina SETTINGS lOxAO1OxO31OxOO1Ox0O)
static void status!voidl I
void rnarcoiint x1,int yl.int x2,int y2,char 'cad! i
rectanglelxl,yl,xZ,yz];
i ~ ' ( n i l i , y i i 2 , h i - i , y i + : : i , reitanglefxltZ,yl+i7,~2-2,~2-21;
r e c t ~ " g l e ! x i t l , y l + l , x Z - l , y 2 - l i :
setfillstylelSOLID_FILL,BLVEl;
SetcolorILIGHTGPAY!;
linel~ltl,yl+l6,x2-l,~l+lG~; SetcolorfGREENl : ^.itte~tE:l!(r.l'r?!,l-a?rlen!cad"?,yl~~,~=~);
raliiinmize, I
setfillstyle!SOLID_FILL,BLACK1; farli=0;i<=3000;i+=0.1)
x=randm(314j+lG3; y=Lanaornflbl)tlbu: barix.y.x+l,ytl); x=randoml3141+163; y=randomilGl)+160; h a r l x , y , x + l , ~ + ~ l ;
void msjlchar 'cad:
void 'S;
n=strlen!cad)*4; int n;
~=mnllorlim~g~si~~l7OD-n;7ln;?lnin,7Ln)i;
~ a r c a l 3 0 0 - n , 2 1 0 , 3 4 0 t n . 2 6 0 , . . N E N S A J E"1; getimagsl300-n,2i0,340+n,zGO,Sl;
outteXtxyl320-n,210,~ad!; z c t c c l c r [LIGETC-MY!;
getcn( I ; setfillstylelSOLID-FILL,6LACK); bar!300-n.z10,3~0tn,26n); p u t l m a g a l 3 0 0 - n , 2 1 0 , S , X O R P U T ) ; froelsi:
i t r b o t b n l 5 3 6 , 2 0 0 , 5 1 6 , 2 1 0 ; b o t o n 4 ) : butonupl53n,Z50,510,290]; strbotcnl530,250,6i0,290,"Salir"]; I
Yoid bz::s<i:t X2,iT.t y1,ir.t .x2,izt y?] I ~etfill3tylelSOLID~FILL,6LACIo;
int x.y;
A
void redibuja-auto(void1 I datos 'aux; int px.py: X=260;
f-1; Y _ ? - , , _ 1 "",
px=X+ceilflaux-~x+lcosiaul-~an~ulo~M_PI/l80l'aux-~dist!l*fl; if IPY c= 22 I I px >= 4981
j
g o t o rei f-=.n!;
py='i+ceilliaux-~y-isinlaur-~an~~l~~M_PI/l8@l~aux~~dist)]*f); if lpy <= 38 I I py >= 397)
f-1.01; goto r e ;
!
void transmite_cai(char c ; 1
void verif_rec!int cmdl
int status2; status2 = bioscom(3, 0. Con];
A
whilelstatus2 6 DATA-RMDYI
bioscomiZ, 0, cm) ;
5uitchlcmd) trmsnite C I Z ! C r n d ! . .
status2 = biascoml3, O, COM);
case 0:liberalkL); L=ENLL; redLbu3 a-manual I 1 : break:
1
else ifiy >= 100 66 y <= 1401 / + Boton 2'1
botondownl530,100,61C,1401;
deiayti0ü); strbotonl532,102,610.l4O,boton2);
botonup~530.100.610.140); strb.?tonI53@,100,610,1~0,botonZ);
barlL72.432.497.4411; setflllStylelSOLID_FILL,BLAcKl;
barl272,442,497,450);
SetcOlorILIGHTGRAY;; outtextxy1275.432," PAUSA temporal
pushill:
I - ~-"~~?,esf,197,4?7::;
p " s h ' : ' j ; del ROBOT
strboton1532.152.610.190.baton3); botondowni530,150.610,1901:
delayl100); botonup~530.150,610,1901; s+rh-+.tm,6?" lGn ,".,. 6 , " I s " ~ h, ,+ , , " l$ . ,
~ ~ ' ~ ~ 7 2 , ~ 3 ~ , ~ 9 ~ ' ~ 4 i , ~ setfillstyle(SOLID_FILL,BLACK);
bar(272,442,497,450); barIZ72,462,497,472); s ~ ~ ~ o ~ ~ ~ I L I G H T G R A Y J ; outteXtxy1275,432.'* MOVIMIENTO del ROBOT ! " ) ; p u s h ( ' * ' ) ; pushl2);
1 else if(y >= 200 66 y I= 2401 I+ %ton 4*/
botondown1530.200,610,240): strbotanI532.202.610.240.boton4~:
1 8158 sonido 1 1 :
1
1 if ly>-203 6 6 y (217)
if ,i( ; 5r"Z iL ii ~ L 1 1 , .>,, ,,+ P h X X i x , ' i
botondam(503.203.517.217);
delay(l00); f l e c h a i z q ~ 5 0 4 , 2 0 4 , 5 1 8 . 2 1 8 ) ;
botonupf503.203,517,2171; flechaizq(503,203,517,217); x ; statusi); redlbuja-manualil;
/ M U AREA
datos a:
while('feofIArch1) Arch=fopenf"a:\\mapaZ.c","rt");
void herr-mapalconst int x,const int y1
int mx,my,b,ban=O: ..*id '3: S~malloc!imagesize!r,y,~ilO0,yt7Olj; gerimage,x,y.xrí~ü,y+iO.j,; marcoIa,y,x+:OO,yt7O,"M A P A"): setrolorlLIGHTGRRY); ~uttext~yIx+15,y+25,"Z~ OUT"1: outtextxylx'l5,yt35."Z00n 1N"I; outtextxyIx+15,yt45," AUTO"); o"ttBXtXyIxt15.yt55," Salir"); rn7,CFtT" T ' ( t C " 0 :
do _
oculta rato"(1: se t f~ l l s ty l r lSOLID_FILL.9LACK) ; barlx,y,xt:OO,yt70l; putimape(x.lr.S.KOR_PUTi:
ir ~ ~ t j ( ; ; free(S!;
goto fin: -
else
I else sonido! 1 ; !
- . n n i h i ! ; . ." . .
sonidof 1 :
else if!b == 21
I wniietban := i,; oc"lta_ratonll; setfillstylefSOLID_FILL,BLACK); barfn,y,xt100,yt7OI; putimapsIx.y.S.XOR~PUTI; freels); redibuja-manuaio; rn l l ra t r - , rat"*,!: fin:;
void leemapalvoid1 i FILE 'Arch;
A
status2 = bloscoml3, O, COM): ifl3tatus2 & DATA-READY)
I Out3 = bioscoml2, O , COMI: "a>;z = ".*~~"
'ban-I: . n Y l ,
I
I WNE=TRUE; *ban=O: I * I
I - if isrmuli h IifiE-cFÚi!
I iatuin %t::
I
vola veriiicacomlint OUT, l int px. py, ban = 1;
datos b: int a, W N E = FALSE;
sditchfautl
!= o 1
Iflban == O 1
if1 out != 'S' ! continue;
else DONE = TRUE:
J
nwnl6R = out << 8; " l i t = r ~ r i v l - a r i r h a n ! ; if Iban == O 1
numl6R t= OUti printf I"%d\n",numl6Rl; DreaX:
if (ban == O!
setfillstyle!SOLID~FILL.BLRCKI; if !out c 10)
else
break;
case '@':out = recivcarfsbani; I + Status * /
break:
.","m 1 1 1 I n ? " i n , . " " ~ ~ ~ , ~ , ~ - ~ , ~ , , , ~ " " , ,
barl272,462,497,P721; 5wlrcnIouEi
1
:outtextny(275,442,"Reiniciando Sistema"): ca3e O
:~uttextxy:?75,94ZI"Inactivo"i; ca5e 1
:outte~ttry1275,442,"Explorando"l: C I S * 2
:outtextxyf275,44Z,"Ocupado"l; case 3
:olltt~~t~yl275,44?,"Moi~iendose"); cas* 4
break:
break:
mear:
break;
break:
Lb*r_c.F'"i, break:
ban-espera=O: break;
xvii
:outtextxyl275.442,"Transmitiendo Dato5 ..." 1 ; case 7
break;
lO:euttextxyI275,(62,"Ccrmando Recibido"); c e s e
LrraL; I
:outtextxyI275,452,"FALLO en el k l ~ ! ' ~ ) ; case o
Llreax:
:outtextxyl?75,15?."ERR@R en Comando!");
I
case I
break;
i'
outtextxy1580.362,
out = recivcar(&brtn): if Iban == O )
setfillstyleisoLID_FILL.BLACKl: ~ar(580.422.627.44:); outtextxyI580,122,DRi;
lf Iban e= 0 1
ADR = out << 8; but = reclvcar(6ban); ADR += out: ADR I = 10; outtex:xy1580,(32,klR); b.X=XR;
b.x=O;
QlJt = r.ci%.<.riit.*l!:
oreai;
h.y=y?:+i
L.y-o;
b.angula=/'ARt*/ ADh; b.llg=NULL: contadartt: ifi!esta_dataI&bl 66 Dh c 12Cl
void verifica_ratonlint x , int y, int b, int 'ban)
A
whilelban != 1 ) : iiberaihL1; clasegraphl I ; printfl"%d",contador); I
Apéndice B
Hojas Técnicas y de
Especificaciones
Especificaciones Técnicas del 8051.. ......................
Especificaciones Técnicas del Convertidor Analógico
Digital ADCOSOS.. ............................................
Especificaciones Técnicas del Sensor Infrarrojo
HOAI405 (Honey Weeli) ...................................
Especificaciones Técnicas del MC2833 (Transmisor
de FM). ..........................................................
Especificaciones Técnicas del Controlador MC 3472
del Motor a pasos del Sistema de Tracción.. ............
..
iii
vii
xi
xi¡
xv
B 1
Especificaciones Técnicas del XR215, Modulador
de FSK.. ........................................................ xviii
Especificaciones Técnicas del LM565, VCU.. .......... xxii
Especificaciones del Circuito Integrado LM555,
Timer. .......................................................... xxiv
Especificaciones del Amplificador Operacional
LilX74l.. ....................................................... KKV
Especificaciones del TDA7000 (Receptor de FM)..... xxvii
B
Especificaciones Técnicas del 8051
Pines del 805 1
lmentaclóa +5 V vss 20 E PO.0-PO.? 39 - 32 E/S P1.0-P1.7 1 - 8 EíS P2.0 - P2.7 21 - 28 E/S P3.0-P3.? 10- 17 E/S RST 9 E A T X 30 S PSEN 29 S EA 31 E XTALl 19 E
Tierra. Puerto 0 bidireccional. Puerto 1 cuasiibidireccioaal. Puerto 2 cuasibidireccional. Puerto 3 cuasibidireccional. Reset Address Latch Enlabe Program Store Enlabe External Accses Enlabe Cristal 1 1 XTAL2 18 S cristal 2
Descripción de conexiones.
B 111 ...
Diagrama a bloques del 805 1
nu ,uhirr,,
Organización del la Memoria Interna del 8051
iv
Una de l a s maneras de cómo mapear la memoria por medio del 74 138:
Diagrama a bloques del modem interno del 805 1 :
B
Registro de control del modem interno
Configuración del =ado de transmisión del puerto serial
B
Especificaciones Técnicas del Convertidor Analógico Digital ADCOSOS
B vii
i"- ".."
Connection Diagrams
Timing Diagram am"
B m 1 1 ...
B
B A
Especificaciones TCcnicas del Sensor Infrarrojo HOA1405 (Honey Weell Company)
TEST ZUfiFhCE
Especificaciones del Sensor infrarrojo HOA1405
:, ....... ..,*."I .........
B
Especificaciones Técnicas del MC2833, Transmisor de Fill
Low Power FM Wansmitter System
"~
LOW POWER FM TRANSMITTER
SYSTEM SEMtCONDUCTOR TECHNICAL DATA
Users Must Comply wtth Local Regubtmns on R F Transmisscon (FCC. DOT, PT 1, et(:)
i
B
B
Especificaciones Técnicas del Controlador MC 3472
SEMICONWCTOR I TECHNICAL DATA 1
i I . . .
- I- . . . . . . . . . . . . . . I ....
1
i 1c ... _ - ~ ......... ................ ~ "" _" ' I !
?, ORDERING INFORMATION
PIASTIC PACKAGE P sumx
CASE W G
.. I .. - ............ -. ............ . . . . . I
I 1
I I
I
!
PIN CONNECTloNS
B
. I . ... . .
B
Especificaciones Técnicas del XR215, Modulador de FSK
B xviii
DC ELECTRICAL CHUIACTEW'IWX ( W D )
B XiX
t
E
rw ""1
I
. ...
Especificaciones Técnicas del LM565, VCO
'801
I t
B
"- 1
r
0.1 0.15 0 4 0 5
2.5 2 2.2
o 1 02s
1251"
B xxiii
Especificaciones del Circuito Integrado LM555, Timer
I"
. " ..
'E
t 8
i
B
Especificaciones del Amplificador Operacional LM741
!
- "
N a i i o n a l S e m i c o n d u c t o r
LM741 Operational Amplifier General Deswbtion
!
Especificaciones del TDA7000 (Receptor de FM)
FM radio circuit TOA7000
."' 47
B
2
u: A .
'.5
B
Bibliografía P MANUAL Y APLICACIONES DEL MICROCONTROLADOR 8051.
Alejandro Vega Salinas. CINVESTA V IPN.
P THE MICROCONTROLLER
Scott Mackenzie University of Guelph.. Ptinted in Macmillan Publishing Company.
P EXAR.
1997 Comunications Products Data Book.
(http://www.exar.com).
> ECG Products.
Philips Consumer Electronic Company.
(http://www. ecgprdcts. com).,
P NATIONAL SEMICONDUCTOR Data Acquisition.
P NATIONAL SEMICONDUCTOR Operational Amplifiers.
P NATIONAL SEMICONDUCTOR Aplication Specific Analog Products
(http://www. nsc. com)
P MOTOROLA. Analoglinterfaces ICS Vol. I
> MOTOROLA. Wireless Seimiconductor Solutions Vol. II
P MOTOROLA. Fast and LS TTL Data.
P MOTOROLA. Bipolar Power.
P MOTOROLA. Rectifier.
@ttp://www.motorola.com/sps/).
P SISTEMAS MODERNOS DE CONTROL. Teona y Practica.
Richard C. Do6 Ed: Addison Wesley Iberoamericana.