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 It. 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:
102
Embed
UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAM4037.pdf · El tamaño y capacidad de una computadora varían con el tamatlo, la velocidad y la potencia del CPU, que ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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 .....................................................
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
?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
;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
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
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
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);
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
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