UNIVERSIDAD AUTONOMA METROPOLITANA Unidad: lztapalapa. División: Ciencias Básicase Ingeniería. Carrera: lng. Electrónica en Computación. Materia: Proyecto Terminal I y I t . Titulo: Diseño, realización de un Autómata Robot y comunicación a una PC. Fecha: 21 de septiembre de 1999. Alumnos: Juan Carlos Rosas Cabrera 94217975 94218449 Javier Tores Vigil Asesor: UNIVERSIDAD AUTONOMA METROPOLITANA Unidad lztapalapa Ciencias Básicase 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úsBarriosRomano Integrantes: Juan Carlos Rosas Cabrera Torres Javier Vigil Matricula: 94217975 94218449 Indice Prologo....................................................................... 1 Introduction.. ..................................................... 3 Etapa I.................................................................................. 7 . I 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 tracciony movimiento........................ Plataforma y estructura para soporte de los circuitos controladores................................ 13 Lista de las partesdel Automata-Robot................ 14 Sistema minim0 (8031)............................................ 16 Circuitos controladores delos motores a pasos....................................................................... 17 Motores parala tracción ......................................... 17 Motor para el sensor................................................ 19 Sistema de alimentacibn de energía ........................ 21 Sistema de sensores .................................................. 22 Sistema de conversión halógico-Digital ............... 24 Primer programa..................................................... 26 ................................................................................... Etapa I1 28 Comunicación entre PC'y el Autómata.Robot ....... 29 Sistemade Madulacicin FSK.................................... 30 Sistema de Transmisión ............................... 31 Sistema de Recepción de F M ................................... 32 Sistema de Demodulación FSK. .............................. 33 Inicialización del puerto del Autómata-Robot........ 33 Inicialización del puerto dela PC............................. 34 Transmisicin de la PCI ................................................. 34 Transmisión del Auhjmata-Robot ............................ 34 de ., Recepclondela Pc'..................................................... 34 Recepcicin del Autcimata-Rahat................................... 35 Control y monitoreo del Autómata-Robot en una PC ...................................................................... 37 Tipo deencabezado y datos (Protocolo de . ., comumcaclon)............................................................... 37 Descripción dela 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 dela 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 losaavances tecnológtcos innovador en los proyectos de investigación, inquietud que surge, debido 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. Comohemosvistoenpelículasdecienciaficció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 hablaun derobot 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 persona normal, imitar sus movimientos, reacciones y sentimientos; pero una un robot real (actualmente) está totalmente fuera de alcance de imitar en todos sentidos a una persona. Podemosdefinir un Robotcomounamaquinaquepuedeejecutarciertastareas 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 sistemasde 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 - RobotsClaseAlfa: Estaclaseesla massimplepuessolamentepuedenrespondera estímulos y realizar alguna acción en respuesta ellos. a - Robots Clase Beta: Esta clase es un poco mas "inteligente" que la clase Alfa, claseAlfa, la clase Beta tambiénreaccionaa habilidadde"recordar" estímulos,el los estímulosexternos,peroéstaclase las reaccionesadichosestímulos,estoes Robot almacena la informaciónnecesariapara igual que la tiene la , teniendo un conjuntode un estímulodado 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 eincorporanuevas características que lo hacenmuysuperiora generalizartodos los estímulosquepuededetectar.Como las anteriores. Esta clase puede la claseBeta,también"recuerda" las solucionesde un estimulo y ademásgeneraliza Csta respuestaparaunavariedaddeestímulos similares que no hayan ocurrido aún. Para este proyecto se tuvo la inquietud de construir un librarobstáculos y moverselibremente,porsi Robot Clase Alfa pues éste podrá solo, mediante un sistemaquemidadistancias 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 la pantalla de unaPC y junto con distancias obtenidasse enviaran por radio, para ser desplegadas en 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. Enla figura siguiente se muestra un diagramadebloquesde un sistemadecontroldigitalde circuito simple.Esta configuración dc sistema digital recibe el error, e(g, y realiza los cálculos para proporcionar una , formaque salida, ~ * ( t )de el hcionamiento delproceso 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. ficroprocesahr U *(o Proceso Salida 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 controlpormicroprocesador.Estediagramamuestraque formadigital(num6rica) un sistema de un microprocesadorrecibeseñalesen y operacon ellas, encontrastecon los que lo hacenmediante 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 1o m o O 0 80000000 60000000 40000000 i 20000000 O i 1 ]Aiio Cantidad 1 1 1960 100 ~~~~ 1970 1OOOO 1 I 1980 1000000 1 1990 10000000 1 2000 1 1 10o0o0000 ~ Numero total de sistemasde control por computadoras instaladosen industrias Como se muestraenlasiguiente g r s c a elnúmerototaldesistemas de controlpor 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 tamaño y capacidad de una computadora varían con entrada y salida, y una unidad de memoria. El 1965 se han hecho cada vez más comunes el tamatlo, la velocidad y la potencia del CPU, que desde 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 delos componentes y el costo de los dispositivos lógicos empleados en la construcción de computadoras. Los sistemasdecontroldigitalseempleanenmúltiplesaplicaciones:paramáquinas herramienta, procesos metalúrgicos, procesos químicos, control de aviones, control de tráfico de automóviles, control de inyección electrónica deun 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 cargan, descargan,sueldan,cortan o simples. En la industria se emplean máquinas que o moldean,con el objetodeconseguir precisión, seguridad, economia y productividad. El empleo de sistemas digitales integrados a máquinas que realizan tareas como lo hace un ser humano,fueprevistopordiversosautorescomo 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 robotspuedenemplearseampliamenteen la exploración espacial, en ensamblajes de autos,etc. Un robot se podría definir como un manipulador reprogramabley multifuncional diseñado para realizar diversas tareas. 5 El Proyecto de Investigaciónse divide en dos etapas: Primera Etapa: Para el hcionamiento delautómata-robotsehará 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ónentre el robot y cualquierPCpodráseralámbrica o inalámbrica, dependiendo de la disponibilidad de los componentes y de la complejidad de estos; tambiénserá factible usarunaPCpara exhibir, y compartircon 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óndc su hcionamicnto, cl “sistcma” sc analizará cn cuatro partesprincipales: 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 usuarioy el Robot. 6 Etapa I 7 Una vkibnen general del Sistema v como se compone Se tienela inquietud de realizar un autómata que haga la tarea de reconocer las dimensiones o explorar una área determinada y que estassean mostradas en el monitor de una PC. Este autómata que se controlaasí mismo por medio deun sistema mínimo basado en el procesador803 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 1 Medidorde 1 I Distancias 1 Controlador - deservomotores m Software - Sistema de Comunicación € 8 El Aut6mata-Robot v sus Dartes A continuacijn sedescribelaspartesyfuncionamientodelAutjmata-Robot:este se componedepartesprincipalescomoloson:sistemadetracciónymovimiento,plataforma, estructuraparasoportedeloscircuitoscontroladoresysistema mínimo, así como tambiénsu sistema dealimentacijn y sistema de sensores. El Autómata-Robot esta diseñado como su nombre lo dice para moverse por si solo, este y circuitos de control) autómata fue creado (tanto sistema mecánico, sistema eléctrico y de potencia, por nosotros, la mayoria de las piezas del sistema mecánico fueron ‘recolectadas’. platdoma, La el sistema de tracción y movimiento y la estructura para el soporte de los circuitos y batería se muestran enlas 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 puntosde apoyo en el piso, dos son los que van a proporcionar la tracción para su movimiento y uno solo funciona como puntode apoyo al sueloo plano; se diseiio así de tal forma que formaraun triángulo equilátero,yaqueestetipodegeometriaharíafácilsudesplazamientopara 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 interiorhay un cojinete'cónico'elcualsirvecomoapoyo su y permitequelaesferaruedecon 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 Motoresa 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 motorespasos, a 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 uno, dejar fija una llanta y la otra proporciona la para dar vuelta se puede lograr de dos maneras: 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 proporcionanlos motores a paws por la facilidad de su control), para queeste 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 motoren los dos sentidos y a velocidades variables. Los motores a pasos sonmotoresqueseobtuvieronde motoresdedosbobinas como la figuraquesemuestra Drives de 3 %,, paraPC's y son a continuación y así comotambiénsus 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 Bobina A coil A : coil B : Bobina B Los Motores a pasossonusadoscuando el movimiento y posicióntienen queser precisamente controlados. Como su nombre implica el motor a paso se mueve en pasos discretos, 11 cada paso corresponde un a pulso que es suministrado uno a de los enbobinados del estator como se muestra a continuación ,dependiendo del diseño puede avanzar 90° 45" , 18" ,o por una fracción de y 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 enun motor de un Estator con 3 polos salientes yun 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 conmutadorA es cerrado el campo magnético resultante . creado por el polo1 atraerá el rotory entoces se alineara como se muestra Si abrimos el conmutadorA y si simultáneamentecenamos el conmutador B el conmutador se alinea con el polo2 , en ese momento rotarh unos60". La próxima vez si abrimos el conmutador B ysimultáneamentecerramoselconmutadorCelrotorgiraraunos Inomento se alinea en el polo 60" adicionales , enese 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 podemosponerenreversalarotaciónoperandolascomputadorasen la secuenciadereversa A,C,B,A,C,B. En ordende 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 moverlobajo lainfluencia de fuerzas externas. Con el sistema de alimentacih de los motores a pasos y el diseño del sistema mecánico de transmisióndemovimiento(engranes)soncapacesdemoverhasta 4 Kgrs. elcualespotencia 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 semuestra en la siguientefigura, la cualtambiénestahechademadera y seeligiómadera en general para el Autómata-Robot por su fácil manejo, economía, resistencia y por su poco peso. Esta solo sufunción es endesempeiiar un soporteadecuadoparalastarjetasdelsistema sistemadecontrol y potencia de los motores,batería,circuitosdemodulación mínimo, el y demodulación FSK, y circuitos de transmisión y recepción deFM. La plataforma sirve para apoyo y fijación, corn9 ya hemos dicho anteriormente a los tres puntosdeapoyo en elsueloparaelrobot, la otra como sepuedeapreciarenlafiguraanterior 13 también hay espacio para una batería, la cual es recargable y nos proporciona la energía necesaria paratodoelsistema.Estabatería nos proporciona12Volts DC 4 Amperespara un ciclo el soporte de los aproximado de trabajo de10 a 15 minutos; al rededor de ésta está la estructura para circuitos.Cstaestructurasoportalossiguientescircuitos:en un nivel se encuentraelsistema mínimo, circuitos para la transmisión serial y controladores para los motores a pasos. Y a un costado de la estructurase encuentra el circuito que va a controlar un a tercer motor de pasos de4 bobinas el cualnos proporciona el movimiento angular de los sensores, la etapa de potencia los de y el circuito convertidor de Analógico-Digital de sensores, la etapa de amplificación de los sensores 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á ala esfera. 4) Cilindrohueco,partesuperior. 5) Cojinctc cónico para apoyo dc la csfcra Esfera 6) 7) Tapa cilindrica para sostener la esfera 8) Cuerpodetracción 9) Base larga para sostener el extremo interno del eje 10) Perno para fijar el movimiento de la llanta 11) 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 fijarel motor a la plataforma 17) Base del motor 18) Engrane sinfin acopladoalejedelmotorparatracción,comotransmisorde movimiento 19) Eje del motor 20) Engrane de la llanta como receptorde 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 nivelI 29) Alojamiento para circuitos nivelI1 14 Plataforma, estructuray sistema de traccicin. La base principal de éste sistemamínimo es el microprocesador803 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 controlarel motor del medidor de distancias y 4 bitsparacontrolas los motoresde la tracción),tambiénseescogiópor la similitudde los mnemónicos y la forma de programación conla familia 80x86 de INTEL Este sistema esta compuesto comose muestra en la figura siguiente: ~~~~ ~ ~~~~ ~ Figura d e l sistema minim0 y circuitos para comunicación serial E1 sistemaestacompuestoporuna 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 cualsirve para mapear la memoria,es decir, dividetoda la memoriadireccionable (64Kb) en bloques de 8Kb cada uno para habilitar dispositivos diferentes conectadosal 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 delos sensores. El primeroes un circuito MC3479 deMotorola el cualcontrolamotoresde 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 enel circuito siguiente: I +IN i51 CLK M1 M1 cor4rol& lor h€O?,?r.s Circuito controlador delos motores depasos y especificaciones 17 Para el circuito anterior, el programa en ensamblador o lenguaje de máquina para moverlos motoresdepasosmencionadosanteriormentecon los controladores MC3479 espormediodel siguiente procedimiento: ~ ~ ;RUTINA PAPA MOVER E L MOTOR DE LA TRACCION MUEVE: MOV DPTR, 119FOOH MCVX A, @ C P T R MOV DPTR, #9FFOH MOVX @ D P T R , P. MOV DPTR, Y 9 F 0 l H MOVX @DPTR A, MOV DPTR, U9FFlH MCVX @DPTR,A CLR c:: CICLOM: RETARDO2 LCALL CFL RELOJ LCALL RETARDO2 LPL REiúJ LCALL RETARDO1 LCALL DEC16 JNB C16,CICLOM RET Listadopara mover los motores depasos 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 analizanen 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 Hexadecimal 88470H (2 vueltas) (mris significativo) O 1 B8H 440 (1 vuelta) 03H 0370H Cabe señalar que una vuelta de en Registro YFOOH OlH Registro YFOlH (menos significativo) B8H I 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 depasos adecuados. 1s Las funciones de ~ T ~ y RETARDO1 O 2 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 de4 bobinas y por tanto no se necesita un controlador especial para61 como para la etapa de potenciaal motor. los de2 bobinas, en el siguiente circuitose muestra como se conecta P4 P5 P6 P7 Etapa de potencia d e l motor de 4 bobinas Fara el circuito anterior, el programa en ensambladoro lenguaje de máquina para mover el motor de pasos mencionado anteriormente con el circuito anterior es por medio de los siguientes procedimientos: ;RUTINA PARA CAMBIAR LOS DECMD: MOV A, U0 BITS DE MOTOR (UN PASO ADELANTE) 1 19 MOV MOV MOV MOV MOV ACC MOV Mnv CLR RRC CJNE SETE MOTlA: SETB MOTZA: MU/ MOV ACC.1.C MOV MOV MOV MOV MOV MOV ACC.7,C C.Pl.6 ACC.6,C C,P1.5 .5, C C,P1.4 wr. 4 , c C a A, IZ4,MOT:A ACC.7 CJNE A, t72,MOTZA ACC.7 MOV C,Pl.0 Aii. O , i C,P1.1 C,P1.2 ACC.?,C C,P2.3 ACC.3,C P1.A RET ;RUTINA PARA CAMBIAR LOS BITS DE MOTOR [UN PASO ATRAS) I?!cw": !?X? n,t C MOV C,P1.7 MOV acc.7,~ MO'J C,P1.6 i"iüi ACi .ó ,5 MOV C,P1.5 MOV ACC.5,C MOV MOV CLR A RLC CJNE SETB MOT1: SETE MOTZ. MOV MOV MOIJ C,P1.4 ACC.4.C c A, 11128,MOTl a~c.4 CJNE A. #32,MOT2 ACC.4 M011 Mjov c, P i . 2 MOV ACC.Z,C C,P1.3 ACC . 3 , C P1.A MOV MOV MOV r,P 1 . D ACC.O,C C,P1.1 ACC .1,C 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 avanceo retroceda un solo paso. Estos procedimientosse llamarán el número de veces que sea necesario por otrosprocedimientosque mas adelante se explicarán. La secuenciadebits para el correcto funcionamientode 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 proporcionadospor un regulador de +5 V 7805. Adicionalmentepara los integradosoperacionales Lh.1741 los cualesson la etapade amplificación de los sensores requieren de una fuente simétrica, la parte positiva nosla 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: ELL- +12v 12v + +5V 9v -5v Circuito del sistema de alimentación 21 Este sistema constade l a s siguientes etapas: 1-Etapa dereloj: genera pulsos conuna frecuencia determinada para sincronía. 2-Etapa de potencia del transmisor infrarrojo: A partir de los pulsos de reloj junto con esta etapa suministrala 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 demilivolts 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 acuerdoa la distancia que se encuentre el objeto del sensor. El emisor y receptor infrarrojo están montadosen un motor de pasos de cuatro bobinas que hace un barridode 180" donde este motorda 100 pasos y portantoobtenemos 100 datos. Para obtener éstos 100 datos primero se regresa el motor a su posición de ángulo cero con la siguiente rutina: II I ;REGRESA A ?~EG?s?.:?%'.J SU POSICION ORIGINAL p.?, !IC1 EL MOTOR ?.NGULO=O CICL0R:LCALL INCMD LCALL RETARDO3 DJNZ RET R7,CICLOR Regresa motor a su ángulo cero I 23 Sistema de conversidn Analógico-Digital ElsistemadeconversiónAnalógico-Digitalconsisteenobtenerla seiial que recibe del sistema de sensores para convertirlos datos a 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~latrobobinas y en cada paso que hace un barrido de 180" el cual para llegar a estos 180" el motor da 100 pasos obtiene un dato del ADC, lo cual quiere decir que al final de cada barrido de 180" tendremos 100 datos los cuales se almacenanen la memoria RkM (6264) los cualesson procesados por el803 l. El circuito Tire hace esta conversiónse muestra a continuación. De el Sensa Paralalectura de un datcidelconvertidorAnalógicci-Digitalsedebenderealizarlos siguientes proceditmentos: ;HACE QUE EL A/D EMPIEZE A CONVERTIR KG:' DPTTR, /GAGG"O:: P1.3, CINIAD P1.3.CINIAD2 ;RETARDO R7, #21H :::IA3: CINIAD: JNB CINIADZ: JB MGV ClNIXU4:UJNZ K~,LlNIHU¶ MOW. PDPTR, A CI?!I?.D3: ,??!E CAD, CI?!I?.D3 FINAD: RET ;RUTINA DE INTERRÜPCIGN DEL A/D PÜSH ÜPi, iNTAD: DPH PUSH MGV DPTR, iiOAOOOH MOVX A, @DPTR MOV DPTR, #9FF2H ?IC'.? DPH POP POP CSAEDT 9 .m.. .. uv !?DER,?. DPL - .- -.. 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 esperarhasta 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ón9FF2H y pone en ‘bl” el bit CAI). Paraqueloanteriorfuncionesenecesitaqueelmicroprocesadoracepteinterrupciones externas (registro IE)y ésta debe estar activada. Procedimientos para leer I 00 datos delsemor Como el motor debe hacer un barrido de 180grados para obtener100 datos se deben de Ilamar Las siguientes rutinaspara obtenerlos. ; L E EL A SD I S T A N C I A S Y LAS GUARDA APARTIR DE 9EOOH ; 1 n c psscs i” - 1 . 8 ;rzdcs LEEDIST:!%’! P.?, ulnC MOV DPTR, f9EOGH CICD1ST:CLR CAD DPLPUSH pijjii T,CAI,l MOV MOVX POP PC? MOVX LCALL INC LLUL DJNZ PET DPH TNTAD DPTh,#9FFZH @DPTR A, DPH EPL @DPTR,A DECMD DPTR RETAhTIDu3 h4,CICDIST :T,T,AMA AR ITIATPTA NRAA CONVTFRTR CON FT. A / D ;LEE VALORA/D DEL ;GUARDA LO CONVERTIDO TABLA EN LA Rutina para leer 100 datos Primero se debe regresar el motor a su posición en ángulo cero y después se llama a LEEDIST. 25 Paraprobar el sistemaquemueve al aut6mataseelaborci un programadondesepuede demostrar todoslos 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 queel automata se mueva. + Cargar No de paso S Mntorl-1 c.% j I ik ueve Motorer a la Derecha ! Avanza de frente 9 Cargar No de paso S __r_ ucn Motons Avanza de fnnte Motorl-1 T Avanza de hacia atms --”-I w [ F i n ] Motor14 Motor2-1 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ónentrela PC y elAutómata-Robot, y elprogramaparaelcontroly monitoreo delmismo. Contunicacidn entre PC y el Autdnfata-Robot Para establecer la comunicación entre PC la y el Autómata-Robot se usa una comunicación punto a punto, pues los dos aparatos mencionados son los únicos que actúan la comunicación. en A continuación se presenta el siguiente diagrama a bloques que explica la TransmisiónRecepción de los datos: YY Se escogió que la transmisióny recepción de datos entre laPC y el sistemahera mediante la cuentan con estey su bajo costo. el puertoserial debido a que la mayoría dePC's Para lograr la transmisión de los datos se requiere de4 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 paraelAutó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 anteriorsedefineengeneralcomoestá transmisión en un sentidoesexactamenteigualque el sistemadecomunicación y como la la recepción en sentido inverso, sólose 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 modularlos pulsos TTL como se muestraen la siguiente figura: 1 ov Sa lid o Moduloci6n FSK ov 5v Pulsos de Entroda ov J I LnJ t 30 Comoseobserva en la figuraanterior,cuandose tiene un nivelalto 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 la frecuencia de modulación ver el apéndice C. de 2.4KHz.Para ver mas con detalle como se logra IL T 7 Antena c L 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, seutilizandosfrecuencias = distintas paraenviar y recibir datos simultáneamente sin que ocurrainterferencia. 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 comercialy para que 1 receptor se encuentre en ésta banda se debe devariar 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 yase puede realizarla comunicación entre el Autómata y PC la mediante sus respectivos puertos que se programaron las consiguientes características: 1 - Velocidad: 600bps 2 - Paridad: 3 - Longitud de palabra: 4 - Bits de parada: bit1 Ninguna S bits Los programas siguientes inicializanlos puertos de comunicaciones;la programación enla PC se hizo en lenguajes C++ para DOS debido a l a s facilidades que éste ofiece para el control de los puertos: MOV MOV TH1, MOV SCON,W01010010B ;INICIALIZA LA TRANSMISION SERIAL ; VALOR DE AUTO-RECARGA PARA 300 BAUDS #OF3H ; MODO DE AUTO-RECARGA TMOD, X20H SETB MOV IE,#85H TR1 ;HABILITA LAS 1NTERRUPClONES inicia el puerto de1 Autómata-Robot I 33 Inicializacidn del puerto de la PC COM SETTINGS #define #define bioscom ! O , SETTINGS, CCM) 1 (@xA@1OxO3~0x0010x001 ; Los siguientes programas muestran la transmisib serial de la PC y del Autbrnata: I void, I transmite-car (char c) int status2; s t a t u s 2 = l ; i o s c ~ m ~ 3 O, , COMI ; if (status2L DATA-READY) bioscom(2, O, COM); b i o s c o n l l . c, COMl; Transmision de un caracter en lenguaje C Transmisión de Autómata I I I ; T R A N S M I T EC A a C T E R OUTCHAR: JNB T I , $ CLR TI MOV SBUF,A ; ESPERAR A TRANSMISOR L I S T O ; LIMPIARLA BANDERA i ; TRANSMITIR RET Transmisi6n de un caricter en lenguaje ensamblador I r int recivcarfint 'ban) I int s t a t u s 2 , while [ ;DONE1 I out3, DONE=FALSE; = bioscom(3, O , COMI; f l s t a t i i ? & DATA-HRADYI status2 1 1 o u t 3 = broscom(2, O , COM); DONE = TRUE; +L."". uuII-I, I 1 return o u t 3 ; I R e c e p c i h de un crrnicter en lenguaje C 34 ;LEE CARkTER INCHAR: J N B CLR MOV RET I RI, $ RI A,SBUF ; LECTUKA Recepción de un carhcter en lenguaje ensamblador I 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 pesardequeelRobotesautónomosenecesita.de un programaqueadministrela transmisión y recepción de datos para su monitoreo, exposición de datos y control del AutómataRobot en donde quiera que se encuentre. Para esto se eligió el lenguaje C++ para DOS como lenguajes de control de esta interfaz. Comoelautómata mmda datosala comunicación entre éstos, ya que la PC y viceversa,debeexistir un protocolode 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 Encabezado: Datos: 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). (un byte) o un Este pude ser: cadena (varios bytes),un carácter número compuesto(doso mas bytes) . Tipos de Emabezadoy 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 entrela 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 realizanlas siguientes hciones: 1 - Mapa: Despliegalos datos enviados por el autómata, éstos datos son: distancia y ángulo; éstos datos se grafican con respectoal 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 quefunciónestárealizando,comoporejemplo: “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: Indicalos 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 - Detienetodaactividadhastaque se melva apresionasFausa o Reiniciar. c)Moverse - Al presionarestebotónsedebeseleccionarconelMousela 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 encuentreademk de que reinicia el estado del monitor y del robot a cero. e) Salir - Cierra el programa. 40 Una delos botones de la ventana de Herramientas que se debe explicar con mas detalle esel se desplace a de “MOVERSE”, éste botón manda una serie de comandos al autómata para que éste la posición que se haya seleccionadoy una vez que se ha alcanzado la posición se continua con la exploración. Ejemplo para la selección un de punto a donde se quiere desplazar el autómata: 1 - Al presionar el botón“MOVERSE en este apareceel 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ánlas coordenadas X y Y 41 4 - Al tener la posición deseada se presionael botón “ENVIAR”,éste botón regresara a su y con esto se envía los comandos necesarios para que el autómatase texto original (“MOVERSE”) 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 primerprogramaquesedescribirá es eldelAutómata-Robotquetomapartedelas 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 deflujo: Verifica el comando enviodo D Moverse o ... Moviniento 4utbnono 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 de16 bits y ambos se encuentran en el Apéndice A (Programas Finales). 45 Apéndice A Programas A F u n c i h de incremento 16 bitf .............................................................. A-ii Funcion de decremento de16 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 restardos números de16 bits.......................................... A-iv Rutina para comparardos 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 i Este apéndicecontiene las rutinas querealizanoperacionesde16 bits, éstas fueron necesarias de implantar ya que el microprocesador solo tiene registros de 8 bits y muchas de las variable que se usan parael control de Autjmata-Robot debenser mayores de 8 bits. Función de incremento 16 bits ;INCREMENTA LA VARIABLE INCi6: CLR OOH MOV B.#D 1,^T, L.,"" nu rn lm, , n, " , In..r_nsl L L " i , MOVX ADD JC A, @DFTR MOVX LJMP IUPlK,H I?!CUIGU:MOT.' MOVX CLR ADD i.iG""i DE 16 BITS EN YFFOH Y 3FFlH A. #1 INCHIGH PINS16 EPTP..#OFF15 A, @DPTR DOH A, If1 @LPTR,i. FiNS16: RET E~ttix pare ir,crerr.entar en 1 le variaS!e de 16 Sits Función de decremento de16 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 ,. D Y r h l n C D T 7 r ? c MOV DPTR,#3FFOH ;VERIFICA SI ES CERO Y MOVX ;PRENDE BIT A, FDPTR CJNE A, #DDH,SIGUE ~ ~ ~ "~ ~,. DPT ~ F ~ i ~ MOV7 a, PDPTR CJNE A, #OGH, SIGUE SETB C16 LJMP FiNRl6 ..II..LI y _ _ 1 _ 1 DEC16: cLp\ . C, & T rYlV rL O... C CLR MOV MOV AC B,#O M0Q-A A, @DP'IR A, #1 SUBB DPTR, I1YFFOH FEPT?.. P. JC DECHIGH LJMP FINR16 DECH1GH:MOV DPTR, U9FFIH (.I""* A, GÜFTR CLR C AC CLR SUBB A, X1 MOVX @DPTR,A MOW .,-.-, rT*rDli. i-l..I". T .D O ~ - ~ Rutilia pata iui;lenieida elk 1 la w~iabtljiada 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 acero, A Función ipara multiplicar dos números de 16 bits ; M U L T I P L I C A DOS VARIABLES DE 1 6 B I T S A = 9FFOH Y 9 F F 1 H ; B = 9FF2H Y 9 F F 3 H , RESULTADO EN 9FFOH Y 9FFOH K 2 L T l S : "SH "S"' RS1 SETB SETB RSO MOV DPTR,89FFOH .I W V ~ MOB MOV INC MOVX MOV LCPLL ML'LTB MOV MOV MOV i.lG< MOV A. R4 R6.A A.R5 R7.A A,R2 MWJX MOV INC :.:c'"y MOV i(?:A LCALL MOV MOV MULTE DPTR, YBFFOH A,R5 14n.r" 1'Y"& DPTR A, @DPiR RO, A DPTP A. @OPT!? Rl,A DPTR 4 , PrjPTR R2.A DPTR A, @DPTR RJ, A 1°C onnmn C Y T I I I , " n I INC MOV MOVX A, 800 @DPTR,A INL UPlK MOT1 F.. a 5 MOVX INC MOV DPTR @DPTR,A ,.".", A,R7 LCALL POP RET SUMA16 PSW ,.,U"A O.."^ I CLJrln,n ; r n ~ l t i p l i c a valores de 8 b i t s p a r a MULT16 KLLTB: U""' MOV MUL ?.,?.I B,R3 MOV AB R5,A M ü ' R4, MOV MGV MUL A,RO ADD ?G"J MOV RET a a, ~3 AB A.R4 R?,A R3,B !?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 sumardos números de 16 bib I ;SUMA DOS VARIABLES DE 1 6 B I T S A MOVX MOV AC DPTR, 8 9 F F l H A, PDPTR B.A DPTR, U9FF3H A, @DPTR A, B DPT?., $ ? F F l H @DPTR,A DPTR, X9FFOH MOVX A, @DPTR MOY MOV a,ñ CLFl MOV .,-.", h ",.L Y MOV PlOV MOVX ADD Mnii j . l. I 9FFOH Y 9 F F l H ;SUMA 9 F F O , 9 F F 1 CON 9FF2,9FF3 DPTR, X9FFZH MOlnr A; ADDC MOV A, B MOVX = @DPTP DPTR, I19FFOH I?DPTR. A RET Rutina para s u m a r dos variables de 16 bits Esta rutina suma dos variables de 16 bitscada una, NO detecta sobreflujo. -4 ... 111 Rutina para restardos números de 16 bits = 9FFOH Y 9 F F l H ;RESTA DOS VARIABLES DE 1 6B I T SA ; B = 9 € F 2 HY 9FF3H , RESULTADO EN 9FFOH Y 9 F F l H RESTAI6:CLR -77. iun MOV MOVX MOV MOV MOVX SL'BB MOV MOVX MOV i"iiiv;i MOV MOV MOVX A , BS U B E ?$O'.' MOVX RET I 1 7 " nc D P#T9RF, F; R3 H E S9Tf FAO , 9 F F 1 H. @DPTR ;RESULTDO B,A UPI'K, X Y L t IH @DPTR A, F., B DPTR, U9FFlH IPDPTR, A DPTR, #9FFZH A, PDpTñ MENOS 9F€?, 9 F F 3 EN 9 FPFFOF .l R,A DPTR, %9F€OH A, @DPTR E# X ? F? F, ,C H @DPTR,A Rutina para restar dos variables de 16 bits Esta rutina restar dos variables de16 bits cada una, NO detecta acarreo. Rutina para comparar dos nrimeros de 16 bits ;COMPARR DOS VARIABLES DE 1 6 B I T S A ," - 9?F?!? Y 9?F3!? ;RESULTADOS: MA ME O ; A>B 1 i ; A<B O ; + ,E J .- ; CMP16: A, iaüPTiK R1.A T kt¡- DDT?. MOVX MOV INC A, PDPTR m,A DPTR CLR CLR CLR xcv CJNE MOV CJNE 5 LXP NOEQ?: JC SETE CLR S LmP MENOR2 : CLR NOEQ1: PSW MiiV'Y, ;.;o."A MOV A, ? ü E ñ K3.A C MA NE ",,o n L 1 ;W EN EL BANCO 3 = 1A ;R3 EN EL BANCO 3 = 1B ." M4 ME ECMP16 S LlNP JC SETB MA u n ML X? " EiHPi6 MENOR2 SETÜ ."" .- - ~ A. OlAH, NOEQl A, R1 A , OlBH, NOEQL .,- SX P MENOR1: CLR SETB FCMPi6: POP 9FFlH RS 1 MOVX MOV INC MOV Y 1 RSO D X R , #?F%H A, @DPTR RO,A DPTR ::O': 9FFOH " xyxxyxx PUSH SETB SETB = M A ,-AL FCMP16 MENOR1 FPMDl 6 ME MA PSW I Rutina para Comparar dos variables de 16 bits Esta ultima rutina ponea uno o borra ciertos bits o banderas (MAy Me) para sabersi la primera variables es mayor, menor o igual. A Primer Programa MOVX MOV MOVX OOOOH ORG RELOJCLRMAIN: SETÜ MiiQ SETB MDER VARIABLES PARA AVANZAR DEREHO MOV DPTR, X9FOOH MOV A, ROEOH M'3W ?OPT?.. R PASOS PARA QUE LAS INC DPTR MOV A, X06H ;";c"-x BDPTR, A LCALL MUEVE MOVFR MCITCIRCS CLR SETB nnn lrnnTnnTrC n rn._ "n,\LnuYIu MOV MOV MOVX DPTR, X9FOOH A, #OEOH @DPTR, A SETB MIZQ MnFR VARIABLES PARA GIRARA MOV DPTR, X9FOOH MOV A, XOBRH MGVX D???.. A PASOS P A WG I R A R INC DPTR MOV A.XO1H Mü"X ?ÜPTR,A LCALL MUEVE MO1IF.R MOT0RF.S r1.R "n,,Lni,A,ud nnnn cfi>- ;Y LLAMA LA RUTINA PARA MIZQ MDER ."",7., ,<LLn,\L,wL.,>u" ; L A DERECHA ;CARGAEL NÍJMERO DE ;GRADOS ; Y LLAMA LA RUTINA PARA ;LOS ;VALORES DE LAS ;CARGAEL 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 LLAMA LA RUTINA ;Los ;VALORES DE PARA xn?ll l\L,V"dL2 Ri,XO3H RETARD02:MOV CICLOR2: MOV R1, #16H CICLOR12:DJNZ RZ.CICLOR12 D.TN7 RET R2,CICLORll R1, CICLORl R2, #16H ~1 rTrT.oR? ;DFCRFMFNTA 1.A VARTAR1.F n F 1 6 RTTS FN 9FFOH Y qFF1H D P T R , X 9 F F O; VHE R I F IECSSA I CERO DECl6: MOV ;PRENDE B I T MOVX A, @DPTR CJNE A, X O O H , SIGUE nPTR, P9FFlH MOV A, BDPTR MOVX CJNE A, #flOH,SIGUE SET9 C16 T,.TMP FTNRl fi SIGUE: CLR C CLR AC MOV 8, #O MOV nPTR, It9FFnH MOVX A, iaDPTR SUBB A, X 1 MOVX BDPTR,A 7,"ECUIC-U FINR16 LJMP DECH1GH:MOV DPTR, b 9 F F l H MOVX A, @DPTR CLR CLR AC SIIRA A: n 1 MOVX BDPTR, A F I N R 1 6R:E T Y LAS I?"N""I\ RELOJ EQUMIZQ MDER ;DEREHO EQU EQU CLR CLR MDER VARIABLES PARA AVANZAR HACIA C16 PARA ; D I R5 F O 0 ; D I R9 F 0 1 ;Los ;VALORES DE LAS :ATRAS DPTR, Y9FOOH A, XOEOH @DPTR, A LAS DPTR A. #06H BDPTR, A MUEVE :RUTINA PARA MOVER EL MOTOR DE MUEVE: MOV DPTR, t9FOOH ;CARGA EL NUMERO DE ;LLANTAS ÜEN 4 W E L T A S : Y LLAMA LA RUTINA LATRACCION ;bit fl ;bit 1 ;bit 2 reloi sentido motor izquierdo sentido motor derecho = 1 AVANLA DE FRENTE ;LLANTAS DEN 4 VUELTAS :Y LLAMA LARUTINA Pl.0 P1.l P1.2 ; b l B I T > M l d U Y MULK ; C A K W LL NUMLKV U L EQU PARA 26H.0 PARTE BAJA DEL PARTEALTADEL END MIZQ A nl CICLOR1: MOV CICLOR11:DJNZ DJNZ KL I n3,nrrrnn MOV DFTR, X9FOOH MOV A, XOEOH MOVX @Ut'lK,A PASOS PARA QUE LAS INC DPTR MOV A,XO6H MOVX BDPTR, A MUEVE LCALL MOVER MOTORES MOV MOV MOT' PASOS PARA QUE INC MOV MOVX LCALL MOVER MOTORES RET .. _ 1 ; 9 O GRADOS ;Y ."./.J YrlK,t?C"ln _",".. MOVX A. BDPTR MOV DPTR, R 9 F F l H MOVX @DPTR,A C16 CLR CICLOM: LC?LL P.E?P.?.DO? RELOJ CPL RETARDO2 LCALL RELOJ CPL LCALL XTARDOi LCALL DEC16 ,JNR C 1 6 : C T r l OM RET nrmnnmii, n SET9 MIZQ SETB MDER VARTART.F.S PARA AVAN7AR nF.RCHO MOV DPTR, X9FOOH MOV A, XOEOH MOVX @DPTR, A PASOS PARA ClIF T A? INC DPTR MOV A, Xfl6H MOVX @DPTR,A T.CAT.1. MIJFVF MOVER MOTORES SETB SETB DE ;LLANTAS DEN 4 VUELTAS fi PAbO5 P A W U I W K J b U DPTR INC MOV A.XO6H MOVX @DPTR, A LCALL MUEVE MOVFR MOTORFS .,"nTn"TP.C ,. r_ a D C n EL ?!TLyE!?." <.I"" ;Los ;VALORES DE LAS MIZQ MDER rrnnn ( 1 I 1 - l i ..-,, ;INICIALIZA ;LOS :VALORES DE LAS @DPTR A, DPTR, X9FFOH @DPTR,A ; B I T DE CERO PARA 1 6 B I T S CERO ; 1 S I VARIABLEES CONTADOR DE PASOS CONTADOR DE PASOS Programas Finales Programa del Autómata-Robot MnV OOOOB OR@ SUMAR MAIN LJMF ORG MOVX MOV 0003H INTAD LJMP ;INTERRUPCION ;p3OG"a.A PRi;<C.pz MAIN: MOV SCON.XO101001OB ; I N I C I A L I Z A LA TRANSMISIONSERIAL MOV T H 1 , XOF3H ; VALOR DE AUTORECARGAPARA 3 0 0 BAUDS , TMOD, f2QH ,. unno T)E , r . u ~ ~ RECARGA TR1SETB MOV I E , #RSH ;HABILITALAS iNiERRiiPcIONEj IP,XOOH ESPCOM LCALL HASTA R E C I A I RR E I N I C I A ; V E R I F COMANDO NO SALE CAD INIDATOS INICIAMD LCALL UtIMOV ::':""E INC DPTR MOVX INC WVX INC MOVX DPTR INC MOVX IE?TR, X,Y,ANGULO SX ".. A, BDPTR DPTR. l9FFlH JNB @DFTR,A SUMAX,RESX S W P _In IL LChLL 4ZSX1 RESTAP MOV DPTR, X9FFOH MOVX MCV MOVX MOV MOVX A, @DPTR QPTR.' aeFndu @DPTR,A DPTR, U9FFlH A, ODPTR ;DEVUELVE RESULTADO EL "" ,#"-Ar,, V r l n , *,I".," MOVX @ DPTR, A POP ACC LC?TI. ;MOV ;D I V ccwn I-.." i"lU" " " ;CALCULAELSENO DEL ANGULO A B, (IOFFH AB UFlK, " X 3 r r L" ;;"rcLT E L ,?&GU.i;iO FOR LADISTANCIA MOVX LDPTR,A MOV DFTR, X9FO8H A, @DPTR DPTR, #9FF2H MOVX MOV *An>/" '" " MOV MCVX MOV MOVX '. @UPTR,A CLR RET DPTR, X9F04H n nnovn DPTR, #9FFOH @DPTR, A DPTR, #9F05H ..,.I LCALL :<e< y S I G N O DE @DPPR,A DPT? laDPTR, A ' . " Ill ;CARGA FT VAl.nR A A X DFTR @DPTR,A C T n VUPl'K, X u-. RET ; I N I C I A L I Z A LOS VALORED DE X, Y INIDATOS: nPTR, it9FO7H MOV MOV A, XOOH @ DM P TORW, A INC DPTR MUVX T RESX: RESX1: CLR LCALi LCALL DPTR, #9FF2H CDPTK,A DPTR, #9FFlH A, @DPTR DPTR, X9FF3H " MOV ??"'.X MOV MOVX MOV %p".X MOV MOKL . j _ L MOV '. MOV MOVX MOV ..-I," 1 I V O0 "'.- . nPTR,49FFOH LA OP. A, @DPTR A X Y RERLIZA ;~&LU-& f i 5 D I $ , i m - L i u PARA ANI;ULO$, MENORES QUE iii GRADOS DADO EN ACC .C ~ , - TR- T T - -a-. - .~.. ==n 1 5rjM-n. ; S I BIT S U M == O RESTA n R n n l l n CY' ''l,.-. DFTR, 89F09H A, @DFTR DPTR, X9FF3H PDPiR,A MCiV DPTR, 89FFnH MOV MOVX LCALL A, # O @DPTR,A MULT16 ACT9OG: ACC -PUSH _l_. COS-,i.iO l,C&L,L :MOV ;DIV MOV L?. "IST?.?!CI?. MOVX MOV MOVX XÜF MOVX Mnv MOX MOV MOVX l l V Y MOV MOVX LCALL B. ;VXOR iGLT :io2 dOFFH DPTR, #9FFlH DPTR, #9FFOH KLKLlLA LX U P . MOVX @DPTR A, MOV DPTR, bOFF2H MOVX @DPTR,A MOV DPTR, X9FF1H MOVX A, @DPTR MOV bUMAK X Y , AB ;MULT EL ANGULO POR @DPTR,A DPTR, X9F08H A, @DPTR DPT2, C9FFiH @DPTR,A DPTR; uqFnsw ODPTR A, DPTR, #9FF3H @DPTR, A mnmn Yrln, ;CARGA EL VALOR A Y ~ " ~ ~urin,fyrrJn ". -_I" I ^ MOVX MOV MOVX MOV ?1O'N MOV MOVX MOV HO-vX #:KO:: A, X0 @D?TR,A JNB rcnu MULT16 RESY: RESY1: A Y PDPTR.A DPTR, #9F06H @DPTR A, DPTR, X9FFOH C^DDTP,,?. DPTR, #9F07H PDPTR A, DPTR, X9FFlH iaDPiR, A SUMAY, RESY sl.w.w LJMP RESTAP LCALL MOV RESYl MOVX MOV MOVX MOV A,@DPTR DPTR, #9F06H @DPTR,A MOVX A,(anPTR D?TR,#9FFOH DPTR, ;DEVUELVE RESULTADO EL #YFFlH 6 MClV MOVX RET MOV MOVX MOV DFTR, ItQF07H @DPTR,A MOVX MOT1 MOVX MOV MOVX MOV MOV MOVX MOV MOW LCALL MOV MOVX ;ACTUALIZALAPOSICION YA S ET I E N EE L NUEVO ANGULO Y DISTANCIA S E CALCULA LA POSICION ;RECORRIDA,SOLO ACTPOS. ;DEBE CARGAR Y SUMAR EL NUEVO ANGULO ;DECIDE CUANTO AVANZAR MOV DPTR, #9FO2H MOVX @DPTR A, MOV DPTR, 19FFOH RnPTR,A MOW MOV DPTR, # 9 F 0 3 H MOVX A, @DPTR MOV DFTR, UBFFlH PnPTR, 4 MOW INC DFTR MOV A, #O0 MOVX BDPTR, A DPTR INC MOV A, X58H ; 9 1 GRADOS MOVX @DPTR,A LCALL CMP16 :MFNOR QIIF 91 GRADOS ,JNR MF,MA90 O<=RNGULOc=90 SETB SUMAX SWY SET6 ACT90G T.CAl.1, FINACPOS LJMP MA90: MOV X9FFZH DPTR, MOV A, #O0 MOW RI)PTR,A DPTR INC MOV #0B5H A, ;181 GRADOS @M D POTWR , A T,CAT,T, CMPl F JNB ME,MA18O ;MENOR QUE 1 8 1 GRADOS 91<=ANGULO<=180 DFTR, '49F03H MOV A, R n P T R MOW MOV 6,A MOV A,#100 C CLR MA180: DPTR RESTA16 DFTR, #9FFIH A, @DPTR !;FTR SilMAX CLR SWAY ACT90G LCALL FINACPOS: RET :SE N E V E MOVERSEA: LCALL MOV MOVX INC LCALL LCALL MOW INC LCALL LCALL A LA POSICIONINDICADA INCHAR DPTR, #9FFAH RDFTR, A DPTR OUTCHAR INCHAR QDPTR, 4 DPTR OUTCHAR INCHAR MOVX INC LCALL LCALL MOW LCALL PnFTR, A DPTR OUTCHAR INCHAR IanPTR, A OUTCHAR MOV MOW MOV DPTR, #9FFAH MOVX A,@DPTR DPTR, b9FOOH 9C MOV A,B CLR SUMAX SETB SWAY MOVX MOV MOVX T.CA1.T. ACT90G SfTR LJMP MOV MOV MOVX INC MOV MOVX FINACPOS DPTR, X9FFZH A, #O1 CLR LCALL @DPTR,A DFTR, 1IQFFRH A, @DPTR DPTR, 119F01H @DPTR,A MTXQ MDER MUEVE MClV MOVX MOV DFTR; I Q F F T H A, @DPTR X9FOOH DPTR, l.CAT.1. BnPTR, A ;271 GRADOS 1.CAT.T. MOW MOV MOVX MOV MOW MIZQ SETB SETB LCALL GRADOS PARA ; LEE VALORES PARA PnPTR,A DPTR, X9FFDH @D?TR A, DPTR, X9FOlH RDPTR, A MDER MUEVE RFT ; E S P E R AI N I C I O ESPCOM: Mnv A , Y O ~ C22: LCALL TXSTATUS ,WB RI.CP2 INCHAR LCALL T,lNf. A, 11 rOM1P: MOV LCALL LCALL r,MF MOV LCALL MOV A,#'*' OUTCHAR INCHAR A:ln:FRRTNT A, Y10 TXSTATUS A, #O0 TCAT T. ;.3hO LEE VALORES AVANZAR RfSTA1 h MOV DPTR, Y9FFIH MOVX A, @DPTR SUMAX CLR ri R SIMAY ACT90G LCALL FINACFOS LJMP MA270: MOV DPTR, X9FF2H A,flOl MOV MOVX @DPTR,A DPTR INC MOV A,%68H @DPTR,A MOW LCALL CMFlB ME,FINACPOS JNB 271<-ANGULO<360 ; GIRAR SUBB A.XOFH BDPTR,A CMFl 6 : 360 PDFTR: A CT,R ME,MA2iO JNB ;MENOR QUE 2 7 1 GRADOS 181<=ANGULO<=270 MOV DPTR, Y9F02H MOW A, R n P T R MOV DPTR, #9FFOH MOVX @D?TR,A MOV DPTR, # 9 F 0 3 H A,RI)FTR MOW MOV DPTR, X 9 F F l H MOVX @DPTR,A DPTR INC MOV A,Itn MOVX @DFTR,A ;1 6 0 MOV A, bOB4H MOVX @DPTR,A A nPTR; YQFO?H A, @DPTR DPTR, #9FF2H BDPTR, h nFTR, iiQF07H A, @DPTR DFTR, 119FF3H BDPTR, A DFTR, t9FFOH A , X01 PDPTR,A A, # 6 @ H ' * ' ,r 7 7 TYSTATIIS LJMP FINCOMZ E R R I N I : MOV A,#Ol LCALL TXERR T..lMF F,SPCOM FINCOMP : RET ;MENOR QUE 360 GRADOS VERIFCOM: ; H A R T T T T AR F C F F r T O E l Ci: Mnv A,#o=, LCALL TXSTATUS MOV R 1 , XOFFH MOV R2,#OFFH c11: ,TR ;UARTT.TTA RFCFPCTON R T COMA ~ DJNZ R2,Cll DJNZ R1,Cl LJMP FINCOM COMA: LCALL INCHAR CJNE A, # ' +' , FINCOM MOV A,#'"' LCALL OUTCHAR LCALL INCHAR COM1: CJNE A, #O,COM2 MOV A,#10 LCALL TXSTATUS MOV A,Uflfl LCALL TXSTATUS MOV SP.XO7 ;REINICIA LA PILA Y REGRESA ALA DIR OOOOH MOV A, YO PUSH ACC PUSH ACC RET CnM7 : C,TNF A, $1, r o w MOV A, X10 LCALL TXSTATUS MOV A, #OB T.CAT.1. LCALL LJMP CJNE COM3: A, $1 o TXFRR A, #O6 FINCOM: MOV RECEPCION LCALL TXSTATUS ;DESHABILITA LCALL TXPOS ; T W S M I T E LA POSICION LCALL VERIFCOM ;VERIFICA SI HAY COMRNDC LCALL T,TAT.T. LCALL CL?E S,MP JC LCALL MOV T,MP CJNE DM3: MOV COMIP: A SI CABE??? M 4 PDPTR, A LCALL MOV DPTR,#9FFOH ANGULO DE LA POSICION MOV A, #O0 MOVX ODPTR,A DPTRINC A,it?nU MOV MOVX @DPTR,A LCALL SUMAG LTMP :TONVTFRTF FI. V A N R DF EN 5F00 Y 5F01 CONVAP: MOV B, 8 2 de 2 bytes se indexa 2 AR MI11 MOV Ri,A MOVCA,@AtDPTR MGV R0,A MOV A?Rl A INC MOVC A. BAtDPTR R1,AMOV A;Yln ;SUMA 45 GRADOS AL RET ACT A PASOS 1 . 0 GIIARnA ; Corno la t a b l a es ; "s.rsq ; SF. c i i r q n e1 TXSTATIIS RFGRFSA CARGA O A LA DM4 A,tflq TXSTATUS FINCOM A,t2,COMlP ; MUEVE STOPMOV: MOV A.tO2 TXSTATUS LCALL LCALL LEEDIST ;REINTENTALEERDISTANCIAS 1.CAT.T. ; DM? DM3 DETMM ;;;; R3, #OOH A, #1,COM3P A,P10 TXSTATUS LCALL TXSTATUS MOV A, # O 4 LCALL TXSTATUS MOVFASFA l.CAT,T. FINCOM LJMP CJNE A, I3,COMERRP MOV A,#lO T,I-AI,I. PROM R5, #SO,DM1 A, #O0 MOV MOV DPTR,R9FOBH DISTACIA MOVIDA MUG @DPTR, A INC DPTR @DPTR,A MOVX RET COM2P:CJNE MOV LCALL MOV LCALL LJMP COM3P: CJNE ;LEE DISTANCIA R3,XOB.DMS MOW . LEEDIST RFGRFSP. VER: ;LCALL VERIFCOM ;VERIFICA SI SE HA RECIBIDO COMANDO MOV R3, #OOH LJMP DM4 ;NO SE PUEDE MOVER mi VER ;SJMP H A S T A RFCTRTR ;NUEVO CAOMNDO ;NO LLAMA NI A MENOR INC DM5: R3 Y NI A MAYOR SETB MIZQ :GIRA A LA DERECHA CLR MDER ;CARGAR EL NoDE MOV DPTR, t5FOOH PASOS AMOVERSE (45 GRADOS1 A, YOCOH MnV MOVX @DPTR,A DPTR INC MOV A,#OOH RFT ;ESPERA A SER REINICIADO O QUE SE QUITE LA PAUSA VERPAUSA: RI COMB COMB JNB LCALL INCHAR CJNE A, P ' * ' ,FINPAUSA MOV A,#'"' LCALL OUTCHAR LCALL INCHAR COMlP: CJNE A, #O,COMZP MOV A,#10 LCALL TXSTATUS MOV A,#OO LCALL TXSTATUS MOV SP,#07 ;REINICIA LA PILA Y RFGRFSA A T.A nTF flflnflH MOV A. #O PUSH ACC PUSH ACC DECIDE HCIA QUE ANGULO TENE QUE ;;PARA AVANZAR ;DETERMINA QUE MOVIMIENTO TIENE QUE HACERSE DETMOV: MOV R3,#00H TCAlT. ATTDOS ; A C T I I A l T ~ A 1.A POSTCTON nFT. nM4: ROBOT DM1: DMZ: VERPAUSA FINCOM A, #2,COM4 TXSTATUS LCALL MOV A, #O2 LCALL TXSTATUS :REINTENTALEERDISTANCIAS LCALL LEEDIST LCALL REGRESA LJMP FINCOM A, #O1 COMERR: MOV T CAT,T ; ;RUTINA QUE ;DESHABILITA GIRAR TXSTATIIS A, # i n MOV TXSTATUS LCALL MOV A, # O 4 TXSTATUS LCALL ;SE MUEVE A LA POSICION LCALL MOVERSEA INDICADA FINCOM LJMP A, 63,CGMERR COM4: CJNE Mnlr LMP FTNCOM C0MERRP:MOV A, (01 LCALL TXERR FINPAUSA:MOV A, X06 RFCFPCTON LCALL TXSTATUS RET numero depasosobtenidosde MOV MOV DPTR.19FOOH t;a bl al a ; Menos A.Ri RTFN R O Y R 1 signifiravivo A S TF S T A 8 MOW ROPTR, A PROM: DPTRINC MOV A,RO MOVX@DPTR,A ; Mas signlficativo RFT DE 9FOO Y 9FO1ADISTANCIANADA CNVPDIS: ;DETERMINA HACIA ADONDE TIENE QUR MOVERSE MOV O P T R , $9FOOH MOV RO, UOFFH MOV R1, #OFFH LCALL MAYOR T CAT T MFNOR MOV A,RO ADD A,R1 MOV B,#2 DIV AB CJNE A, 1132H.NOEQ SETB MIZQ SETB MDER ;IG U m AVANZA DERECHO UNA MOV DPTR, #9FOOH VUELTA MOV A, #OB8H MOW @nPTR,A INC DPTR MOV A, Y O l H MOVX @DPTR,A :PONESENTIDO CONVAP ;CONVIERTE ACC PRTMFR ANGII1.O MAYOR: MOVX A,@DPTR CJNE A, #ROH,NEQMAX 1,OWMAX S.TMP NEQMAX: MOV RO,DPL ;SI FUE MAYOR QUE 80 SJMP E'MAYOR LOWMAX: INC DPTR;SIFUEMENOR IGUAL QUE 80 MOV A,IWT. CJNEA, #66H,MAX2 SJMP EWAYOR ;IGUAL MAX2: DPTR ;INC A, #ÜFFH @DPTR,A nPTR, $9FF?H A, YO2 TXSTATUS ; I O 0 pasos R4, X100 inc ~ 1.8 qrarlos MOV DPTR,lt9EOOH CICD1ST:CLR CAD PUSH DPL PUSH DPH LCALL INIAD PARA CONVIERIR CON EL A/D MOV DPTR,#9FFZH MOVX @ OA P, T R POP DPH EN LA TABLA POP DPL MOW BDPTR,A LCALL DECMD INC DPTR LCALL RETARDO3 Ts;M7, ;LLAMA A LA RUTINA ;LEE VALOR DEL A/D ;GUARDA LO CONVERTIDO R4,CTCnTST MOV A, #O7 LCALLTXSTATUS;TRANSMITE Txrx on 100 DATOS ; RET OEl, PRlMRR A,XBOH,NEQMIN LOWMIN DPTR;SIFUEMAYORIGUAL A,DPL A, #66H,MIN2 MFNOR ANGlI1.O QUE 80 ;1C.IIPIT. R1,DPL MRNOR ;SI RIEMENORQUE ;INICIALIZA Y REGRESA n T S T A N C T A SA 80 ;OBTIENE CUANTOS NUMEROS FUERON MAYORES QUE MOTORQUE MIDE ANC-0 INICIAMD:CLR PARA EL CLR DISTANCIAS SETB SETB MOV MOV DPTR FMENOR: RET '4 ;MOV ;MOV ;MOVX ;LEE LAS DISTANCIAS Y LAS GUARDA A PARTIRDE LEED1ST:MOV LCALL MOV r.rar.r. MAYOR RET 1.A POSTCTON :~F,VlIFl.VF XOH CAD. FINAD A,#OÜ TXERR ALA ;CONVIERTE 'A' A ;nF.VlIFT.VF. l . AP O S T C T O NO F I , SJMP ;LCALL ;ERROR €N EL ADC ;PONE SENTIDO A LA MAYOR QUE a0 MENOR JMP LOWMIN: MOV ;RETARDO JE ;MOV RET S.WP P1 . 3 : C T N T A n ,TNR ; ;;DEBE SUMAR O RESTAR AL ANGULO LCALL MUEVE MIN2: ;INC P22 PMIN R5 DPTR 8, C PROM CINIADZ:JB P1.3,CINIADZ MOV R?, #21H CINIAD4:DJNZ R7,CINIAD4 MOVX laT)PTR,A CAD.CINIAD3 CINIAD?.:JNE FINAD: RET :RA2 MENOR QUE 6 0 MENOR: MOVX A.@DPTR CJNE SJMP NEQMIN: INC MOV CJNE A, XRflH,N&nA ;RUTINA DE INTERRUPCION DELA/D INTAD: PUSH DPL DPH PUSH Mnv nPTR, m m n m MOVX A,@DPTR MOV DPTR,#9FFZH @DPTR,A MOVX POP DPH DPL POP SETB CAD KOV IE, Y85H RET1 UFOOH .JMP SJMP JC INC INC ;HACE QUE EL A/D EMPIEZE A CONVERTIR INIAD: MOV DPTR, XOAOOOH A PA.SOS FMAYOR: : CTNTAT): PASOS DETGI 8 , WlOl ;CARGA NoDE PASOS LCALL MUEVE SJMP DETGIRAZ JC DETMIN NOEQ: DETMAX: MU$ B,A MOV A,#180 SUBE A,B SFTR MT70 CLR MDER IZQUIERDA SJMP DETGIRA DETMIN: CLR MIZQ DERECHA SETB MDER DETGIW\:MOV DPTR, #TABLA LCALL R5, #OOH A, @ D P T R P22 : PMIN: SCPROM: D J N Z RET RET PARA MOV MOV CPROM: MOVX C,TNF. ;CONVIERTEPASOS OFT": O P T R , XOF.OOH MOV P1.4 ;INICIA LOS VALORES P1.5 ;MOTOR QUE MIDE P1.6 Pl.? DPTR,#'?FFOH A,Y9H MOVX ibDPTR,A MOV DPTR, I9FFIH A , UOOH MOV MOW BnPTR;A ;#lo1 MOV R7,XlOl C1CLOMD:LCALL INCMD LCALL RETARDO3 DJN7. R7,CTCI.OMn o MOV ANGULO ACERO MOV MOVX RET DPTR,$QFO?H ;PONF A,#OO @DPTR,A :RIITTNA PARA TNCRCMFNTAR DISTANCIAS INCMD: MOV MOV Mnv MOV MOV MOV MOV MOV MOV CLR MOT1: SFTR MOTZ: MOV MOV MOV MOV MOV MOV MOV MOV ;PARTE BAJA T rpi1.l RFTARnOl LD CEACLlL6 JNB C16,CICLOM RET TIN PASO FT. MOTOR QlIF MTnF RET C,P1.6 ACC . 4 , C A A, # l z a , M m C,P1.0 ACC.0.C C,P1.1 Arr. 1 , C VALIDA RESTAG: ;SUMA PUSH rm C.Pl.2 SETB C.Pl.3 MOV MOVX . ACC 2,C ACC. 3 , C P1,A MOTOR ?.NGULO=O .m8 A,XO MIDE MOV MOW ~rr.4:~ CLR RRC CJNE c Mnvx A. 1 2 4 , M O T l A Arr.7 A,%7i,MOTZA C,Pl.O MOV MOV MOV MOV MOV MOV MOV RFT :RUTINA PARA MOVER WdEVE: MOV LCALL MOVX CT,R CICLOM: LCALL RETARDO2 CPL LCALL CPT. A UN PASO EL MOTOR QUE MOV MOVX MOV MOVX MOV MOVX MOV MOVX MOV R1,C I C L O R 3 r\cc.n,c C,P1.1 ACC . 1 , C C.Pl.2 ACC.?,C C. P 2 . 3 ACC.3,C P1,A E L MOTOR DE LA TRACCION A, 1 0 4 TXSTATUS I?PTR, $9FflflH A, @DPTR DPTR, R9FFOH BDPTR,A nPTR, 8 9 F n l H A, @DPTR DPTR, #9FFlH @DPTR,A C1 6 RELOJ RETARD02 RF1.O.T AL ANGULO E L DATO EN 9FFOH Y 9 F F 1 H Y PSW w 1 RSO DPTR, t9FOZH A; laDPTR MOV D P T R , # 9 F F i;H C O P IEAL ANGULO PARA SUMARSE MOVX BDPTR, A ;EN9FFO DEBE TENERLO QUE S EL E SUMARA MOV DPTR, I 9 F O J H A, @DPTR MOVX MOV DPTR, #9FF3H MOW PnPTR,A LCALL CMPl6 MOV MOVX MOV MOV ;20 R?,TTCT.ORI~ RET C.Pl.7 ACC.7,C C,P1.6 acr. 6 , c C. P 1 . 5 ACC. 5 , C C,P1.4 MOV R 1 , ;#2305 H R2.135H ACC.~ SFTR MOTZA: Rl.CiCLOR2 DJNZ A, #32,MOT2 MOV MOV MOV Mnv MOV MOV MOV ACC S E. 7T B MOV R2,CICLORlZ RETARD03:MOV C I C L O R 3 : MOV rTrT.nRi.?:n.TN7, c ;RUTINA PARA DECREMENTAR DISTANCIAS MOTlA: CJNE $1 f i H R2, # 1 6 H RFT T.iAT,T, A U1 DJNZ A V . 5,C C.Pl.4 ;REGRESA A SU POSICIONORIGINALEL REGRESA:MOV R7, #lo1 CTCT.OR: 1,CAT.l TNCMn RETARDO3 LCALL DJNZ R7,CICLOR RET Mnv R2,103H R?, rTrT,nR11 R1,C I C L O R l RFTARn0P:MOV CICLORZ: MOV CICLORl2:DJNZ ACC.6.C P 1 .C5 , MOV RET ncrMn: R1, # 0 3 H RETARDO1:MOV C I C L O R 1 : MOV rTrT.nRi1: nm7 DJNZ A,#O C,Pl.i Acr. 7 r R1.r CJNE ACC.4 SETB CJNE DFT. VA1,OR MOW MOV MO\i INC MOV MOVX T CA1,l. LJMP RESl: MOV TGIJAT.FS MOVX MOV I NC RFSTAlh DPTR, # 9 € F O H A, @DPTR DPTR, #9FFZH PnPTa, A DPTR, 1 9 F F l H A, @DPTR DPTR, #9FF3H QDPTR,A PDPTR,A DPTR, #9FFOH A, BDPTR RO,A DPTR R1,A DPTR A, @DPTR A MOV :'R INC MOVX MOV A, @DPTR R3,A DPTR MOV MOVX INC DPTR, U9FFOH A. R2 @DPTR,A nPTa A , R3 @DPTR, A DPTR MOV A: MOV% $DPTR,A DPTR A , R1 laOPTR,A RESTA16 ww LCALL FTNRFS1 .MOV > R DPTR A, 168H @DPTR,A RESTA1 6 FINRESl A, (al)PTR INC MOV :A DPTR, #9FFOH A , #O1 MOV INC MOVX ThlC Y 9FF1 MA, R E S l MOVX MOV MOV MOVX VALOR DEL un nPTR. Y9FF'OH ; A < B E MOV MOVX RESULTANTEDEL MOV MOVX MOV MOVX POP RET DP'IR, # 9 F 0 2 H ODPTR,A ;COLOCA ANGULO [?PTR, t 9 F F 1 H A, FDPTR DPTR, Y9F03H @DPTR,A PSW a, P ~ P T R MOW CJ N E SETB LJMP VALOREL c <'1.R STGIIF: CLR MOV MOV MOW SUBE MOVX AC B, x0 DPTR, X9FFOH A,BDPTR A. #l @DPTR,A DECHIGH PTNR1 C. X9FFiH A, ODPTR JC LTMP DECH1GH:MOV DPTR, MOVX CLR SUMAG: MOV DPTR, X9FC2H MOVX A,PnPTR MOV D P T R r # 9 F;FC2OH EPLI A ANGULO PARASUMARSE MOVX FDPTR,A DEBETENERLOQUE S EL E SUMARA MOV U9FO3H DPTR, MOVX A. @DPTR MOV DPTR, # 9 F F 3 H MOVX IdnPTR, A LCALL SUMA16 MOV MOV MOVX PARA COMPARAR INC MOV MOVX JB MOV MOV ;CARGA MOVX PARA RESTARLE I NC MOL' MOVX LCALL LJMP EQSG: ANGULO DE 361 A,dOl A ODPTR, 360 DPTR A:#6RH @DPTR,A RESTA16 FINSG MOV = ;CARGA 359 ; S E ?'GO DPTR, X9F02H ;PONE ACERO A 360 A, # O @nPTR,A DPTR @DPTR,A MOV MOVX INC MOVX FiNSG2 LJMP FINSG: FINSGZ : T.CAl.1. POP RET 6 , x0 nPTR, #9FFnH A, l@DPTR A, X 1 INCHIGH PnPTR, A FINSlG DPTR, # 9 F F 1 H A, @DPTR A :PRF.NDF R T T m 6 MOV D P T R , # 9 F F; VOEHR I F I C A MOVX A, ODPTR CJNE A. UOOH, S I G U E MOV nXP 9TFRF, l H MOV MOV MUL MOV MOV MOV MOV h i t s p a r a MIIT.Tlh A,R1 B,R3 AB RS,A R4, B A,RO B,R3 Mili. AR ADD MOV MOV RFT A,R4 R4,A R3,B ;SUMA DOS VARIABLES DE 1 6 B I T S A OOH = 9FFOH y 9FF1 H A, # l @DPTR,A ;B = 9FF2H Y 9FF3H , RESULTADO EN PFFOH y 9FFlH SUMA16: CLR DE 1 6 B I T S EN 9FFOH 9PF2.9FF3 Y 9FFlH DEC16: v a l n r ~ rd e R ;milifi?Ii?a MULTE: OCH :DECREMENTALAVARIABLE ~:#nn laDPTR, A DPTR A.RG IdnPTR, A DPTR A.R7 @DPTR,A STIMAl fi PSW INC MOV MOVX : TNCRF.MF.NTA 1,A VARTART.F, nF, 1 C. RTTS F,N qFF"H MOV MOV MOVX ADD JC MOVX LJMP 1NCHIGH:MOV MOVX C1.R ADD MOVX F I N S 1 6 : RET Mnv MOVX INC MOV MOVX MOV X9FFCH DPTR, ;REGRESAEL VALORDEL ANGULO MOVX A, @DPTR MOV nPTR, #I)FO?H MOVX @DPTR,A MO? DPTR, XYFFlH MOVX A, @DPTR MOV 1I9FO7H nPTR, MOVX laDPTR, A RET Y 9FFlH I N C 1L6R: @DPTR,A ;MULTIPLICA DOS VARIABLES DE 1 6 B I T S A = 9FFOH Y 9 F F l H ; B = 9 F F 2 H Y 9FF3H , RESULTADO EN 9FFOH Y 9FFOH MULT16: PUSH PSW SETB RS1 SETB RSO MOV nPTR, YOFFDH MOVX A, @DPTR MOV RC,A DPTR INC MOVX A;PnPTR MÜV R1,A INC DPTR MOVX A, ODPTR MOV R?, A INC DPTR MÜVX A, @DPTR MO? R3,A 1 rAT.7. MlIT.TR MOV A,R~ MOV R6,A MOV A,R5 MOV Rl, A MOV A,R2 MOV R3, A LCALL MULTE MOV nPTR, #qFFOH MOV A,R5 MOVX @DPTR,A INC DPTR MP16 ME, F I N S G MA,EQSG 119FF2H DPTR, Al' A,#l SUBB MOVX RET FINR16: DPTR A,rth;RH ODPTR,A LCALL JNB ;EN 9FFO Y 9FF1 DPTR, #9FF2H ~ ; t n l ODPTR, A C CT.R VALOR DEL A, XOOH, S I G U E C16 FiNR16 S ICERO ES ;PRENDE B I T Y C CLR MOV AC MOVX MOV MOV MOVX ADD MOV A, @DPTR R?A DPTR, U9FF3H A, @DPTR A,B nXP 9TFRF, l H DPTR. U9FFlH ;SUMA 9FFO,9FF1 CON 11 MOW lanPTR, A MOV DPTR, X9FFOH MOW. A, @DPTR B. A MOV MOV nPTR, *BFF7H MGVX A, @ D P T R ADDC A,B MOV DPTR, B9FFOH RnPTR:A MOW RET :CIJRNTA F.T. STGNOnFT. PRTMFRO CN FT, ;RESULTADO EN BFFOH Y 9 F F l H SUMAP: PsW PUSH SETB RS1 SFTR RSn JB SIGN0,SUMAPl SUMA16 LCALL SJXP FINSP .%MAP1 : T.CA1.T CMPl 6 JB ME,SUMAP3 ;RESTA DOS VARIABLES DE 1 6B I T S A = 9FFoH y VFF1 H = 9FF2H Y 5FF3H , RESULTADO EN 9FFOH y 5FFlH RESTA15:CLR C T1.R AY X, @DPTR SURR 30s ;MAYOR SlJMA1 fi FINSP = ~FFOH = : A<R ; A-B o xxxxxxx CMP16: PUSH SFTR SETB MOV O 1 CJNE MOV CJNE A. OlBH,NGEQZ MGV ME O 1 O 1 PSW RSl RSO DPTR, It9FFOH A. @DPTR RO,A DPTR @DPTR A, R1,A DPTR A, @DPTR RZ, A DPTR A, POPTR R3,A C MA ME A, RO A, OIAH, NGEQl Moa MOV INC MOVX MOV INC MOVX MGV INC MOVX MOV CLR CLR CLR FINSF: ;R2 EN EL BANCO 3 = BANCO 3 = 1A F C MSFJ1X6P .lC SETB CLR SJMP C1.R SETB SJMP JC SF.TR CLR SJMP MENGRl: CLR SETÜ MOV Rn: E INC MGVX DPTR A, @DPTR R1,A DPTR A, @DPTR RZ,A DPTR MO'J 1NC VARIABLES DE 1 6 BITS A 9FF2H Y 5FF3H ;RESULTADOS : m ; A>B 1 A,R1 ; R 3 EN EL MFNOR? MA ME FCMP16 MA ME FCMP16 MENOR1 MA ME FCMP16 MA ME psw FCMP16: POP RET o Y ;PARALAPGSICIGNX :SUMA AL VALOR EN RFFOH Y 9 F F l H MAS 9FFZH Y ~ F F ~ H TOMANDO FN A DPTR, # 9 F F 4 H A. $ 0 @ C P T R ,A DPTR @DFTR,A FTNSP ;MENOR ;INTERCAMBIA OPERANDOS DPTR, #9FFOH A, @DPTR MGV MGVX DPTR, X9FFOH PDPTR, A ;CGMPAiL4 NOE@l: MOV SIGNO SUMAP3: CLR A,R Y 9FFlH ;E ;RESULTDO EN DPTR,#9FFZH Al P n P T R B,A DPTR, #9FFOH A, @DPTR MOV MOVX RET MFNOR?: SIGNO MGVL INC MOVX T.,lMP B,A DPTR, X 9 F F l H A. @DPTR A,R D #P9TFRF, l H PDPTR,A MOV MOVX MOV MOVX MGV MGV MOVX NOFQ?: MA,sUMApz MOV GPTR, d 9 F; R F 3E9HSFTFAO , 5 F F l SIJRR 1B JNB SETÜ T,CAl.T, LJMP s uS;M IICGGA LNUPROm 2: MOV MENOS 9 F F 2 . 9 F F 3 MOVX VFFO, YFF1 MGV MOV MOi'X ; R T T *SIC.NO# MOVX MOV INC MOVX A, PnPTR MGV R3,A MGV DPTR, 19FFOH MOV A, R2 MOW PnPTR,A INC DPTR MGV A, R 3 MOVX @DPTR,A T NT nPTR MOV A, RO MOVX @DPTR,A INC DPTR MOV A , R1 MOVX @DPTR,A LCALL RESTA16 MGV DPTR, 6 9 F F 4 H MOW A, P n P T R MGV DFTR, X9FFOH MOVX A, @DPTR MGV DPTR, 6 9 F F 5 H MOW A , PnPTR MOV DPTR, #5FFlH MOVX A, @DPTR POP PSW RET ;PARA LA PGSICIONX o Y :RESTA AT. VAT.OR FN9FFOH Y 9 F F l H MFIUOS 9 F F P H Y ~ F F ~ H TOMANDO EN 'SIGNO' ;CUENTA E L S I G N O DEL PRIMERO EN E LB I T ;RESULTADO EN 9 F F 4 H Y 9 F F 5 H RESTAP: PUSH PSW R S 1S E T B SETB RSO SIGNO, JNB RESTAPl T.rAT.1. SIIMA1 fi FINRESP LJMP RESTAP1:LCALL CMP16 JB ME, RESTAP3 %lNR MA, RCSTAP? LCALL RESTA16 ;MAYOR LJMP FINRESP RESTAPZ :CLR SIGNO ;IGLIAL DPTR, 1 Y F F 4 H MOV MGV A,#O Mob3 @DPTR,A INC DPTR MOW @I)PTR.A FINRESP LJMP RESTAP3:SETB SIGNO ;MENOR ;INTERCAMBIA MOV DPTR, B5FFOH OPERANDOS MOVX A, @DPTR MGV RO, A INC DPTR MOW A, @ n P T R MGV R1,A INC DPTR MOVX A, @DPTR MOV R7, A 12 INC MOVX MOV MGV MOV DPTR DPTR DPTR A, PDPTR R3,A DFTR, X9FFOH LCALL POP LCALL RET R,R7 MO'JX ODPTR,A INC MOV A,R3 MOVX PnPTR,A ; T W S M I T E CODIGC DE ERROR DADO EN ACC T'XERR: PUSH ACC MOV A,#'! INC MOV A,RO MGVX @DPTR,A INC MOV A,R1 MOVX @DFTR,A LCALL RESTA1 6 DFTR A, @DPTR DPTR, #9FFOH @DPTR A, nPTR: lt9FFTH A, PDPTR DPTR, I 9 F F l H A, PDPTR PSW MOVX MOV MGbX POP RET ;CALCULAELSENODEL ANGULO DADO EN ACC SOLO 0-90 GRAnOS ;DEWELVERESULTADO EN A ( E L RESULTADOESTA MULT '10) SENO: MOV MOVr RET DPTR. YTSEN R, PAtnPTR ANGULO DADO EN ACC ;CALCULA EL COSENO DEL sn mnnos SOLO O- DllTrHAR ACC OUTCHAR 1.TAT.T. OllTTHRR INC MOVX DPTR A, @DPTR OUTCHAR DPTR A, PDPTR GUTCHAR DFTR LCALL INC MGVX LCALL INC MOVX A < @nPTR LCALL OUTCHAR MOV DPTR, #9F02H MOVX A, PDPTR l.CRT,l. OIJTCHPR IN2 MOW. LCALL DFTR A, @DPTR OUTCHAR MOV MOV MGV MOV LCALL RET C. SX ACC.0.C Mnv EN A ( E L RESULTADO ESTA VULT ;DEVUELVE RESULTADO *lo) COSENO: MOV MOV DPTR, XTSEN R,R MOV A,#9Q C A,B CLR SUBB a,@atnPTR Mnvr REP ;TRANSMITECARACTER OllTrHAR!,T!JR TT,$ CLR MOV RET ; FSPFRAR A TRANSMTSOR ; L I M P I A R LA BANDERA ; TRANSMITIR TI SBUF,A ;TRANSMITE CADENA,DEBETERMINAR A OUTSTR: CLR Mnvr A, a a t n P T R JZ OUTST2 FIN LCALL GUTCHAR INC DPTR SJMP OUTSTR OUTSTP : RET ;T.FF CliRACTCR JNB INCHAR: CLR MOV RFT ;TRANSMITELA TERMINAR EN O TXCAnFNR!MOV LCALL LCALL OUTSTR MOV T r A T T. RI,S RI A,SBUF EN O ; TOMAR IJN RYTF ; Si ES EL IJLTIMO, ; S I NO, ENVIARLO ; LECTURA if'$' OUTCHAR A,#'$' OTTTCHAR RET ;TRANSMITEEL NUMERO DE FORDPTR A,#'#' TXNUM: M W LCALL OUTCHAR MOVX A, PDPTR 1.CAl;I. OllTCHRR INC MOVX LCALL A. PDPTR 1 6 B I T S QUE ESTE APUNTADO ACT. 1 , r OUTCHAR ANGULO L9FF2H,9 F F 3 H ) TXDATO: MGV A,X'D' LCALL OUTCHAR A, OnPTR MOVX LCALL GUTCHAR INC DPTR MOVX A, @DPTR LCALL OUTCHAR INC DFTR MOVX A, PDPTR LCALL OUTCHAR TNC nPTR MOTA A, e n p m LCALL GUTCHAR RET ;TRANSMITE 1 0 0 DATOS A,R4 PUSH ACC R4, i i l n l MOV MOV DPTR, K9FFCH MOV A, X0 MOVX PDPTR, A MOV DPTR, 09FFnH MOV A, #O MOVX @DFTR,A DPTR INC MOVX FnPTR; n DPTR INC MOVX @DPTR,A DPTR INC MOV A: # l R MOVX PDPTR, A MGV DPTR, #9EOOH DPL PUSH PUSH DPH TXD1: MOVX A, @DPTR TIENEEL DATO DE LATABLA MOV DPTR, 49FFDH MOVX PnPTR,A ;A DPTR MOV MOW MDV MOVX OUTCHAR RFT ;TRANSMITEELCODIGO TXSTATUS: PIJSH ACC MOV C,SY TXD100: MOV CADENA APUNTADA POR DPTR,DEBE A, A ; fnnH iTRANSMTTC DTSTANCTA IqFFnH,.9 P F l H ) Y LISTO A 1,CRT.l. POP LCALL RET ;TRANSMITEPGSICION 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 ' LCALL OUTCHAR MOV DPTR, # 9 F @ 4 H MOVX A, @DPTR ;;;; FTNRFSP:MnV nPTR; ltqFF4H MOVX MOV MOVX MOV OUTCHAR ACC OUTCHAR DE STATUS DADO EN A,Y'@' ACC MOV MOVX MDV DPTR, X9FFOH A, PDPTR 0 9nFPFTFRH, PDPTR,A DPTR, # 9 F € l H A. @DPTR XQFFFH llPTR, 13 MOLT DPL MOV LCALL T,CAT,i, LCALL POP POP TNC PUSH PUSH DJNZ POP POP POP MOV RET CADFNAOO: CADENAOI: CADENADZ: CADENAOS: CAnFNAO4: COMREC: RELOJ MIZQ MDER PDPTR, A SUMA16 DPH DPL DPTR DPH R4, TXDl DPT. DFH ACC R4,A ',O 'TNTCTA1,TZANW nR STSTFMA. DB 'ESTOY ATRAPADO ! ! ! I,O ',O DE MOVIMIENTO. 'EN DE 'YA LLEGE! ! I, O DR 'QIIF MAS HAGO! ' , O DE 'COMANDO R E C I B I D O ' , O EQU EQU EQU P1.0 P1.l P1.2 ;blt O ;bit 1 ;bit 2 reioj s e n t i d o motor izquierdo sentido motor derecho :ST R T T S M T Z Q Y MnER = 1 AVANZA DE FRENTE ENCEN EQU P1.3 DB TSEN: O, 1,3,5,6,8,10,12,13,15,1?,19,20,22.24,25,27,29,30 DB 37,34,.35: 37,39,40,47,43,45: 46,48,49,51,57, 54,5s, 57 DB 58,6O,61,62,64,65,66,68,69,?0,71,13,74.75,76.77,78 DE 79,RO,Rl,R',U3,R4,R5,Rh~~7,RR~Rq~Rq,9~,9l~q?~qO~93 DB FQN 7FH.0 CAD EQU DEL A / D 26H.1 9?,97,98,98,98,99,99,99,99,95 93,94,95,95,96,96,9?, DB Clh Y 90 i l W E L T A DE LA LLANTA CORRESPONDE A 01B8H GRADOS ;180 GRADOS CORRESPONDEA 0 3 7 0 H : 4 1 GRanOS CORRWPONDR A OOF.0H DPTR, X9FFCH TXDATO RF,TARDO? :RTT DF CFRO PARA 1 h R T T S ; I S I VARIABLEESCERO :BANDERA DE RESULTADO L I S T O ;O2 ; O1 ;BANDERAS DE RESULTADODECOMPARACIONDE NUMEROS DE 1 6 BITS MA EQU 26H.2 ;NUMERO DE 1 6 B I T S MAYOR MF FQU 76H.3 :NIIMFRO DF 1 6 RTTS MFNOR ;O3 - ;O1 :10 - a/D ;DIR9FOOPARTEBAJA DEL CONTADOR DE PASOS ; D I R 9 F O 1 PARTE ALTA DEL CONTADOR DE PASOS ;DIR 9 F F 0 PARTE BAJA SUMA, RESTA, ; D I R9 F F 1 PARTE ALTA MIIT,T,nTV Y COMP. ; D I R 9FF2 ; D I R9 F F 3 ; D I R9 F F 4 :nTR 9 6 6 5 DE VARIABLE DE 1 6 B I T S => DE VARIABLE DE i 6 B I T S => ;DIR9FO2PARTEBAJA ; D I R9 F 0 3 FARTEALTA DEL ANGULO DEL ANGULO PARA :nTR 9 F 0 4 PARTF RAJA n FP O S T r T O N X ; D I R9 F 0 5 PARTEALTA DE P O S I C I O N X EQU 26H.4 ; S I G N O DE P O S I C I O N X SX R E I N I C I A ROBOT PAUSE MOVER A RECUPERACION DE DATOS 1 ! ;FRRORFS ;O0 ;DIRECCION AOOOH * CONVERTIDORA/D = PEGI'TRO DE RETilL.TPLKDEL t D I R . E K I O NR F F Z H *' ;COMANDOS ;O0 : D T R 9FOR PARTF RA,TA nF, T,A nTSTANCTA QlJF S F MOVTO FT, ROBOT ; D I R 9 F O 9 PARTEALTA DE LA DISTANCIA QUE S E MOVIO EL ROBOT 1 FALLO EN EL ADC ERROR EN COMANDO NO HAY COMUNICACION CON EL ROBOT ;ESTADO DEL SISTEMA 'tu ;ESTADOS DEL ROBOT ;O0 - REINICIANDOSISTEMA : O 1 - TNACTTVO ;O2 EXPLORANDO ;O3 - OCUPADO ;O4 - MOVIENDOSE : O 5 - FSFCRANnOCOMANM ;O6 - DESHABILITA COMANDO ; O ? - TRANSMITIENDO DATOS ;O8 - EN PAUSA :O9 - CONTTNIIANnO ;MENSAJES DEL ROBOT ;IO - COMANDO R E C I B I D O - :RF,SPtIF,STASnET. :COMANDO RESPUESTA ENVIADO POR PC ; 00 :nTR 9Ffl6 PARTF RA,TA n F POSTCTON Y ; D I R9 F 0 7 PARTEALTA DE P O S I C I O N Y SY EQU 26H.5 ; S I G N O DE P O S I C I O N Y 99,99,99,100 ROROT DEL ROBOT (ESTADO) O1 O0 01 O2 03 o2 u4 m ;nTR 9FFAH ; D I R5 F F B H ; D I R9 F F C H DATOS DE ANGULO AMOVERSE EN PASOS ;DIR 9FFDH DATOS DE DISTANCIA A MOVERSE EN PASOS :STGNO PRRA HACFR i,AS STGNO OF6aH l l. 6 OPERACIONES DE SUMA Y RESTA DISTANCIAS i D I R 9EOOH GUARDA LOS 100 DATOSDE FQII 97H.0 ; R T T PARA SARFR ,ST S F SUMA O SINAX RESTA A LA POSICION X SUMAY EQU 27H.1 ; B I T PARA SABER S I S E SUMA O RESTA ALA POSICION Y ::ST FT, RTT == 1 SE S t M A == O S E RESTA ; ; S I E LB I T A 14 #include #include #include #include tlnclude *inrlor?e COM #define #define FALSE <bios.h> <canm.h> <etdio.h> <stdlib.h> <mouae.h> <qTCfirUT'b 1 T"Z O ldefine Xdetme N 100 #define DATA-READY 0x100 #define TIME-OUT OX8000 *defina SETTINGS lOxAO1OxO31OxOO1Ox0O) 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; harlx,y,x+l,~+~l; void msjlchar 'cad: void 'S; int n ; n=strlen!cad)*4; ~=mnllorlim~g~si~~l7OD-n;7ln;?lnin,7Ln)i; getimagsl300-n,2i0,340+n,zGO,Sl; ~ 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; z c t c c l c r [LIGETC-MY!; outteXtxyl320-n,210,~ad!; getcn( I ; setfillstylelSOLID-FILL,6LACK); bar!300-n.z10,3~0tn,26n); putlmagal300-n,210,S,XORPUT); froelsi: static void status!voidl I void rnarcoiint x1,int yl.int x2,int y2,char 'cad! i rectanglelxl,yl,xZ,yz]; setfillstylelSOLID_FILL,BLVEl; i~'(nili,yii2,hi-i,yi+::i, reitanglefxltZ,yl+i7,~2-2,~2-21; SetcolorILIGHTGPAY!; rect~"gle!xitl,yl+l,xZ-l,y2-li: linel~ltl,yl+l6,x2-l,~l+lG~; SetcolorfGREENl: ^.itte~tE:l!(r.l'r?!,l-a?rlen!cad"?,yl~~,~=~); itrbotbnl536,200,516,210;boton4): butonupl53n,Z50,510,290]; strbotcnl530,250,6i0,290,"Salir"]; I int x.y; A Yoid bz::s<i:t X2,iT.t y1,ir.t .x2,izt I ~etfill3tylelSOLID~FILL,6LACIo; y?] whilelstatus2 6 DATA-RMDYI status2 = biascoml3, O, COM); bioscomiZ, 0, c m ) ; trmsnite C I Z ! C r n d ! . . 5uitchlcmd) 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; strbotonl532,102,610.l4O,boton2); deiayti0ü); void redibuja-auto(void1 I datos 'aux; botonup~530.100.610.140); strb.?tonI53@,100,610,1~0,botonZ); setflllStylelSOLID_FILL,BLAcKl; barlL72.432.497.4411; barl272,442,497,450); ~-"~~?,esf,197,4?7::; I SetcOlorILIGHTGRAY;; outtextxy1275.432," PAUSA temporal del ROBOT int px.py: X=260; - Y_?-,,_ "", 1 f-1; p"sh':'j; pushill: botondowni530,150.610,1901: strboton1532.152.610.190.baton3); px=X+ceilflaux-~x+lcosiaul-~an~ulo~M_PI/l80l'aux-~dist!l*fl; if IPY c= 22 I I px >= 4981 delayl100); botonup~530.150,610,1901; j f-=.n!; ,".,. I s " s+rh-+.tm,6?"lGn 6 , " g o t o rei ~ h , , + , , " l $ ., setfillstyle(SOLID_FILL,BLACK); ~ ~ ' ~ ~ 7 2 , ~ 3 ~ , ~ 9 ~ ' ~ 4 i , ~ bar(272,442,497,450); barIZ72,462,497,472); s~~~o~~~ILIGHTGRAYJ; outteXtxy1275,432.'* MOVIMIENTOdel ROBOT ! " ) ; 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 ; push('*'); pushl2); 1 else if(y >= 200 66 y I= 2401 I + %ton 4*/ botondown1530.200,610,240): strbotanI532.202.610.240.boton4~: ! 1 8158 void transmite_cai(charc ; 1 sonido1 1 : 1 if ,i( ;5r"Z iL ii ~ L 1 1 , .>,, + , 1 if ly>-203 6 6 y (217) v o i d verif_rec!int cmdl botondam(503.203.517.217); flechaizq~504,204,518.218); delay(l00); botonupf503.203,517,2171; flechaizq(503,203,517,217); int status2; status2 = bioscom(3, 0. Con]; statusi); redlbuja-manualil; A x ; PhXXix, ' i / M U AREA datos a: Arch=fopenf"a:\\mapaZ.c","rt"); while('feofIArch1) status2 = b l o s c o m l 3 , O, COM): ifl3tatus2 & DATA-READY) I Out3 "a>;z = bioscoml2, = ". n . *Y~l ~ , " O, COMI: 'ban-I: I if isrmuli I - I WNE=TRUE; I I vola h IifiE-cFÚi! *ban=O: I *I iatuin %t:: veriiicacomlint OUT, l int px. py, ban = 1; int a, W N E = FALSE; b: sditchfautl datos 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,; A P A"): setrolorlLIGHTGRRY); marcoIa,y,x+:OO,yt7O,"M != o 1 ~uttext~yIx+15,y+25,"Z~ OUT"1: outtextxylx'l5,yt35."Z00n outtextxyIx+15,yt45," o"ttBXtXyIxt15.yt55," rn7,CFtT" do Iflban == O 1 continue; if1 out != 'S' ! 1N"I; AUTO"); Salir"); _T ' ( t C " 0 : else DONE = TRUE: J nwnl6R = out << 8; "lit = r~rivl-arirhan!; if Iban == O 1 break; numl6R t = OUti printf I"%d\n",numl6Rl; oculta rato"(1: setf~llstylrlSOLID_FILL.9LACK); case '@':out DreaX: = recivcarfsbani; if (ban == O! barlx,y,xt:OO,yt70l; putimape(x.lr.S.KOR_PUTi: free(S!; ir ~ - ~ ( ; t; j goto fin: I + Status * / break: setfillstyle!SOLID~FILL.BLRCKI; if !out c 10) ? " i n , . " " ~ ~ ~ , ~ I,n ~ -~,~,,,~"",, 1 1 1 .","m else barl272,462,497,P721; 5wlrcnIouEi 1 else I sonidof1 : ca3e O :outtextny(275,442,"Reiniciando Sistema"): else sonido! 1 ; ! break: ca5e 1 :~uttextxy:?75,94ZI"Inactivo"i; else if!b == 21 break: - .." .. .nnihi!; I wniietban := i,; oc"lta_ratonll; setfillstylefSOLID_FILL,BLACK); CIS* 2 case 3 :outte~ttry1275,442,"Explorando"l: mear: :outtextxyf275,44Z,"Ocupado"l; barfn,y,xt100,yt7OI; putimapsIx.y.S.XOR~PUTI; freels); redibuja-manuaio; rnllratr-, break; cas* 4 :olltt~~t~yl275,44?,"Moi~iendose"); break: rat"*,!: fin:; Lb*r_c.F'"i, break: void leemapalvoid1 i ban-espera=O: break; FILE 'Arch; A xvii case 7 :outtextxyl275.442,"Transmitiendo Dato5 ..."1; break; cese lO:euttextxyI275,(62,"Ccrmando Recibido"); LrraL; I case o :outtextxyI275,452,"FALLO en el k l ~ ! ' ~ ) ; Llreax: case I :outtextxyl?75,15?."ERR@R en Comando!"); break; I outtextxy1580.362, out = recivcar(&brtn): if Iban == O ) whilelban != 1 ) : iiberaihL1; clasegraphlI ; printfl"%d",contador); I setfillstyleisoLID_FILL.BLACKl: ~ar(580.422.627.44:); outtextxyI580,122,DRi; QlJt = r.ci%.<.riit.*l!: lf Iban e= 0 1 oreai; ADR = out << 8; but = reclvcar(6ban); ADR += out: ADR I = 10; outtex:xy1580,(32,klR); i' b.X=XR; h.y=y?:+i b.x=O; L.y-o; b.angula=/'ARt*/ ADh; b.llg=NULL: contadartt: ifi!esta_dataI&bl 6 6 Dh void verifica_ratonlint x , int y, int b, int 'ban) A c 12Cl Apéndice B Hojas Técnicasy de Especificaciones Especificaciones Técnicas del8051.. ...................... iii Especificaciones Técnicas del Convertidor Analógico Digital ADCOSOS.............................................. .. vii Especificaciones Técnicasdel Sensor Infrarrojo HOAI405 (Honey Weeli) ................................... xi Especificaciones Técnicas del MC2833 (Transmisor de FM). .......................................................... xi¡ Especificaciones Técnicas del Controlador MC 3472 del Motor a pasos del Sistema de Tracción.............. B xv 1 Especificaciones Técnicasdel XR215, Modulador de FSK.......................................................... xviii EspecificacionesTécnicas del LM565, VCU............ xxii Especificaciones del Circuito Integrado LM555, Timer. .......................................................... xxiv Especificaciones del Amplificador Operacional B LilX74l......................................................... KKV Especificaciones del TDA7000 (Receptorde FM)..... xxvii Especificaciones Técnicas del8051 Pines del 805 1 vss PO.0-PO.? P1.0-P1.7 P2.0 - P2.7 P3.0-P3.? RST ATX PSEN 1 B EA XTALl XTAL2 lmentaclóa +5 V Tierra. E/S Puerto 0 bidireccional. EíS Puerto 1 cuasiibidireccioaal. E/S Puerto 2 cuasibidireccional. E/S Puerto 3 cuasibidireccional. E Reset S Address Latch Enlabe S Program Store Enlabe E External Accses Enlabe E Cristal 1 S cristal 2 Descripción de conexiones. 20 39 - 32 1 -8 21 - 28 10- 17 9 30 29 31 19 18 E ... 111 Diagrama abloques del 805 1 nu ,uhirr,, Organización del la Memoria Interna del 8051 iv Una del a s maneras decómo mapear la memoriapor medio del 74 138: Diagrama a bloques del m o d e m 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 DigitalADCOSOS B vii "." i"- Connection Diagrams Timing Diagram " B m a ... m11 B B A Especificaciones TCcnicas del Sensor Infrarrojo HOA1405 (Honey WeellCompany) TEST ZUfiFhCE Especificaciones del Sensorinfrarrojo HOA1405 ....... ......... :, B ..,*."I Especificaciones Técnicasdel 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 DATA TECHNICAL I i 1 ... - I - .............. .... ^ I I 1 P sumx PIASTIC PACKAGE CASE W G . . . I - ...... -.. . . . . . . . . . . . PIN CONNECTloNS I 1 I I I i1 c ... _ -......... ~ ................ 'I! ?, B ORDERING INFORMATION ~ _" " " ! . . . . . I . B I .... . . Especificaciones Técnicas delXR215, Modulador de FSK B xviii DC ELECTRICAL CHUIACTEW'IWX( W D ) B XiX t E . ... rw ""1 I Especificaciones Técnicas delLM565, VCO '801 I B t " - 1 r 0.1 04 0.15 2 2.2 05 2.5 o1 02s 1251" B xxiii Especificaciones delCircuito Integrado LM555,Timer I" t 'E 8 i . " .. B Especificaciones del Amplificador Operacional LM741 - ! Naiional Semiconductor LM741Operational Amplifier General Deswbtion " ! Especificaciones delTDA7000 (Receptor de FM) FM radio circuit TOA7000 ."' 47 B 2 u: A. '.5 B Bibliografía P MANUAL Y APLICACIONES DEL MICROCONTROLADOR 8051. Alejandro VegaSalinas. CINVESTA V IPN. P THE MICROCONTROLLER Scott Mackenzie Universityof Guelph.. Ptinted in Macmillan Publishing Company. P EXAR. 1997 ComunicationsProducts Data Book. (http://www.exar.com). > ECGProducts. Philips Consumer Electronic Company. (http://www.ecgprdcts.com)., P NATIONAL SEMICONDUCTORDataAcquisition. P NATIONAL SEMICONDUCTOR OperationalAmplifiers. P NATIONAL SEMICONDUCTOR Aplication Specific Analog Products (http://www.nsc.com) P MOTOROLA. Analoglinterfaces ICSVol. I > MOTOROLA. Wireless Seimiconductor Solutions Vol. II P MOTOROLA. Fast and LS TTL Data. P MOTOROLA.BipolarPower. P MOTOROLA.Rectifier. @ttp://www.motorola.com/sps/). P SISTEMAS MODERNOS DE CONTROL. Teona y Practica. Richard C. Do6 Ed: Addison Wesley Iberoamericana.