Tabla de contenido:

La Roca: 8 Pasos
La Roca: 8 Pasos

Video: La Roca: 8 Pasos

Video: La Roca: 8 Pasos
Video: La Roca un buen padre Rapidos y Furiosos 8 2024, Mes de julio
Anonim
La roca
La roca

Este robot está controlado por un programa visual básico (a través del puerto serie) y puede moverse en tres velocidades diferentes mediante una señal modulada por ancho de pulso (PWM) generada por un microcontrolador PIC (16F877). El robot se puede operar en dos modos, modos de "control normal" y "rastreador de luz". En el modo de control normal, el robot puede transportar objetos de un tamaño de 3 a 18 cm de un lugar a otro dentro de los 150 m. Considerando que en el modo de seguimiento de luz, sigue la luz en una habitación oscura. Se utilizaron muchos sensores, como sensores de luz; sensor de inclinación, detección de corriente de bloqueo, detección de nivel de batería y algunos interruptores de límite y sensores táctiles utilizados en la mano. Puede mantener su velocidad constante cuando sube a una colina (inclinada) y automáticamente enciende la luz cuando oscurece. Además, para mantener seguros los circuitos integrados, desconecta la corriente cuando está atascado y la mano se detiene al sostener algo. Se usaron 4 motores de CC controlados por un microcontrolador PIC 16F877 y 3 circuitos de controlador de motor. Tomó alrededor de 4 meses y cuesta alrededor de 600 $

Paso 1: diseñar el proyecto

Diseñar el proyecto
Diseñar el proyecto
Diseñar el proyecto
Diseñar el proyecto

en la etapa inicial, se proporcionó un diseño del proyecto. principalmente, definiendo el diagrama de bloques; ver la figura.

En esta etapa se requiere un diagrama de circuito más detallado, sin embargo, para facilitar esto, los módulos principales identificados fueron: 1. Microcontrolador 2. Sensores 3. Motores 4. Circuito inalámbrico 5. Programa de PC. También se realizó un Diseño 3D, ver figura.

Paso 2: elija los dispositivos y componentes

En esta etapa, el diseñador debe elegir los dispositivos y componentes necesarios para construir el robot.

Esto incluye: el circuito inalámbrico (MAX232, LM331, módulos de transmisor y receptor de FM), motores (4 motores de CC), circuito de controladores de motores (puente H), el microcontrolador PIC (16F877), batería, reguladores de voltaje (MC7805), microinterruptores, Fotorresistores, sensor de inclinación … etc. Es importante comprender la computabilidad de estos dispositivos y cómo funcionan juntos.

Paso 3: el microcontrolador

El microcontrolador
El microcontrolador

Este paso es el paso más importante. al principio, se deben identificar los códigos que serán recibidos y transmitidos desde el PIC.

Comience a conectar los componentes a los pines apropiados del PIC y programe el microcontrolador. Esto puede requerir la construcción de pequeños circuitos utilizando reguladores, resistencias, sensores… etc.

Paso 4: escriba el programa de PC

Escribe el programa de PC
Escribe el programa de PC
Escribe el programa de PC
Escribe el programa de PC

El programa fue escrito en visual basic.

La comunicación se estableció a través del RS-232. Usar MSComm para enviar los datos al microcontrolador configurando los ajustes (número de puerto, velocidad en baudios, número de paridad de bits de datos, bits de parada). Usé datos de 8 bits con un bit de parada y paridad a una tasa de baudios de 9600 bps.

Paso 5: Construye el cuerpo

Construye el cuerpo
Construye el cuerpo
Construye el cuerpo
Construye el cuerpo

Un buen diseño de la carrocería es importante. También para elegir la disposición de las ruedas, consulte la figura.

El robot se construyó después de asegurarse de que los programas funcionan correctamente. Este paso también se puede realizar antes de programar.

Paso 6: construya el circuito inalámbrico

Construye el circuito inalámbrico
Construye el circuito inalámbrico

La construcción del circuito inalámbrico puede ser independiente. En la etapa inicial, usé un cable para conectar la PC con el robot, y luego de finalizar el robot, se integró el circuito inalámbrico.

Paso 7: Integrar

Integrar
Integrar

Este es el momento en el que integramos nuestros componentes y probamos el robot.

Paso 8: Código de programa del microcontrolador

;***************Lista final p = 16f877 incluyen radix decidlocs "V" << 8 | "1"; Versión No.config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC; ********** variable principal ************************** cblock 0x20; inicio de banco 0 área ram INPUT_VAR L1 L2 X SPEED11 SPEED12 SPEED21 SPEED22 MSTOP LDET LR1 LR2 endc; ********** inicio del programa principal *************** inicio BSF ESTADO, RP0 ESTADO BCF, RP1 MOVLW 0X40 MOVWF ADCON1 MOVLW 0XFF; PUERTO A ES I MOVWF TRISA MOVLW 0X00; PUERTO B ES O MOVWF TRISB MOVLW 0XF0; PUERTO C IS I / O MOVWF TRISC ISF MOVLW 0 TRISD MOVLW 0X07; PUERTO E ES I MOVWF TRISE BANKSEL OPTION_REG BCF OPTION_REG, T0CS ESTADO BCF, RP1 ESTADO BCF, RP0; ************************* ******************; ****************************** ************ ESPERA BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 CALL PWM1OFF CALL PWM2OFF BCF PORTD, 0 BCF PORTD, 1 BCF PORTD, 2 BCF PORTD, 3 BTFSS LDET, 0 BCF PORTB, 7 MOVLW 0X00 MOVF MSTOP MOVF LDET BANKSEL INTCON BCF INTCON, GIE BANKSEL TXSTA BSF TXSTA, BRGH MOVLW 0X40 MOVWF SPBRG BCF TXSTA, SYNC BANKSEL RCSTA BSF RCSTA, SPEN BTFSC RCSTA, OERR GOTO CLROE BANKSEL PIE1 BSF PIE1, RCIE BANKSEL RCSTA BCF RCSTA, RX9 BSF RCSTA, CRENWAIT1 BANKSEL PORTB BSF PORTB, 3 BSF PORTB, 4 BANKSEL PIR1 BTFSS PIR1, RBCIF PORTO, 3 BCF PORTO WAIT1 BCF LLAME A PWM1OFF LLAME A PWM2OFF LLAME A DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7RXDATA; BANKSEL RCSTA; BTFSC RCSTA, OERR; GOTO SE DETIENE LLAMADA A PWM1OFF LLAME A PWM2OFF LLAME A DARKLIGHT, BTFSC LDET, 7RX DATA, RCSTA BANKSEL, RCS. 0; ******************************************; **** ************************************** MOVWF INPUT_VAR MOVLW 0X00 MOVWF RCREG BCF STATUS, RP0 BCF STATUS, RP1 MOVF INPUT_VAR, 0; STOP SUBLW 0X53 BTFSC STATUS, Z GOTO STOPS MOVF INPUT_VAR, 0; LUZ EN SUBLW 0X4E BTFSC STATUS, Z GOTO LON MOVF INPUT_VAR, 0; LIGHT OFF MOVFOT GOTO INPUT_VAR 0X51, BTFSC INPUT_VAR 0; MOVER HACIA ADELANTE LENTO SUBLW 0X66 BTFSC STATUS, Z GOTO FSLOW MOVF INPUT_VAR, 0; MOVER DERECHA LENTO SUBLW 0X72 BTFSC STATUS, Z GOTO RSLOW MOVF INPUT_VAR, 0; MOVER IZQUIERDA LENTO SUBLW 0 X6C BTFSC STATUS, Z GOTO LSLOW MOVF INPUT_VAR, 0; MOVER HACIA ATRÁS LENTO SUBLW 0X62 BTFSC STATUS, Z GOTO BSLlow MOVF INPUT_VAR, 0; MOVER HACIA ADELANTE MEDIUM SUBLW 0X46 BTFSC STATUS, Z GOTO 0 MEDIANO FMED MOVR STATUS, Z GOTO RMED MOVF INPUT_VAR, 0; MOVER IZQUIERDA MEDIUM SUBLW 0X4C BTFSC STATUS, Z GOTO LMED MOVF INPUT_VAR, 0; MOVER HACIA ATRÁS MEDIANA SUBLW 0X42 BTFSC ESTADO, Z GOTOASTED SUBLW 0X4C BTFSC STATUS, Z GOTO LMED MOVF INPUT_VAR, 0; MOVER HACIA ATRÁS MEDIANA SUBLW 0X42 BTFSC ESTADO, Z GOTOASTED SUBLW HACIA ADELANTE 0X4C BTFSC STATUS, Z GOTO Z GOTO RÁPIDO MOVF INPUT_VAR, 0; MOVER A LA DERECHA RÁPIDO SUBLW 0X57 BTFSC ESTADO, Z GOTO RFAST MOVF INPUT_VAR, 0; MOVER IZQUIERDA RÁPIDO SUBLW 0X56 BTFSC ESTADO, Z GOTO LFAST MOVF INPUT_BTFSC, 0; BFAST MOVF INPUT_VAR, 0; HAND CLOSE SUBLW 0X43 BTFSC STATUS, Z GOTO HCLOSE MOVF INPUT_VAR, 0; HAND ABIERTA SUBLW 0X4F BTFSC STATUS, Z GOTO HOPEN MOVF INPUT_VAR, 0; HAND UP MOVF INPUT_VAR, 0; HAND UP MOVF INPATUS 0;; HAND DOWN SUBLW 0X64 BTFSC STATUS, Z GOTO HDOWN MOVF INPUT_VAR, 0; LIGHT FOLOWE R SUBLW 0X54 BTFSC STATUS, Z GOTO LFOLLOW; ************************************* ***; ***************************************** GOTO CLROEFSLOW; BANKSEL RCSTA; BCF RCSTA, OERR; BCF RCSTA, CREN; NOP; BSF RCSTA, CREN BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP; BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; BTFSC MSTOP, 1; LDET, 0; BSF PORTB, 7 NORMALSLOW MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BCF PUERTO PUERTO1B, 1 BCF PUERTO DE REFUERZO 1 BCF PUERTO BSC, RCIF GOTO RXDATA GOTO REP3 GOTO CLROE; ************************************** ** LSLOW BCF STATUS, RP0 BCF STATUS, RP1; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF MOVWL SPEEDX99 MOVWF 0XCF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 LLAME PWM1ON LLAME PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF POR TB, 2 REP4 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP4 GOTO CLROE; ********************************* ********** RSLOW BCF STATUS, RP0 BCF STATUS, RP1; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO DETIENE MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTO BOTOBATA, 2 GG35 REPOTOB; RXCEL REPOTO 1 BSF; *************************** BSLOW BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO DETIENE LLAMADA DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0X99 MOVWF PORTD2 CALL BC PW PORTB, 2 REP5 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP5 GOTO CLROE; ********************************* **********F MED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO SE DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 NORMALMED MOVLWF 0XFF MOVLWX 0XFF VELOCIDAD MOVLWX 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY REP6 CALL STALL1 BTFSC MSTOP, 0 GFSC STOPS PORTD BANKSEL PIRD1 RXSC GOTO REP6 PLUSEMED MOVLW 0XCF MOVWF SPEED11 MOVLW 0XCC MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XCC MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BCF PUERTO BS, 0XCC PUERTO DE REVOLUCION, 1 PUERTO DE RETROCESO DE PUERTO DE BLOQUEO, 1 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALMED GOTO REP7 GOTO CLROE; ****************************** ************ RMED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORT B, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 LLAME PWM1ON LLAME PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB, 1 BSF PORTB, 1 BSF PORTB 0 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP8 GOTO CLROE; ************************************** **** LMED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO SE DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF MOVWLW 0XFF MOVWLW SPEEDX11 MOVWL SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 LLAME PWM1ON LLAME PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP9; CALL STALL1; BTFSC MSTOP1 B; REP9 GOTO CLROE; **************************************** ESTADO BMED BCF, RP0 ESTADO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X7F MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP10 CALLO STALLOPS1 GFS, BTX STALLOPS1 GFS REP10 GOTO CLROE; **************************************** ESTADO BCF RÁPIDO, RP0 ESTADO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4; LLAMAR NIVEL BUTTOP; BTFSC MSTOP, 1; GOTO DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XEFX11 MOVLVW SPEED MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 LLAMAR SDELAY NORMALFAST MOVLW 0XCF MOVWF SPEED11 MOVVLW 0XCF MOVWF SPEED11 MOVVLW 0XC PORTD, 0 BCF PORTD, 1 BTFSC LDET, 0 BSF PORTB, 7 BSF PORTB, 1 BSF PORTB, 2 REP11 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA NOP BTFSS PORTD11 AST MOVLW 0XCF MOVWF SPEED11 MOVLW 0XFF MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XFF MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTD PORTD, BT1 PUERTO DE BOTE, 1 BSC PORTD, 1 BSP PUERTO DE PUERTO BT1, 1 PUERTO DE BLOQUEO BS1, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALFAST GOTO REP12 GOTO CLROE; ********************************** ******** RFAST BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 REP13 PORTB DE LLAMADA BTC1 GLOBAL, BTF, 2 REP. GOTO REP13 GOTO CLROE; ***************************************** LFAST BCF ESTADO, RP0 ESTADO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO SE DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BSF PORTD, 0 BCF PORTD, 1 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BSF PORTD, 0 BCF PORTD, 1 MOVF PORTD MOVF 0, 1 BCF SPEED, 1 0XEF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 LLAMAR PWM1ON LLAMAR PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP14 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BANKSEL GOTO GOTO GOTO 14 REPRODUCTOR GOTO PIRO **************************************** ESTADO BCF BFAST, ESTADO BCF RP0, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XDF MOVWF SPEED11 MOVLW 0X99 SPEED PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 CALL SDELAY MOVLW 0XEF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XEF MOVWF SPEED21 MOVLW 0X66 MOVWF PWMON CALL BS PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP15 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP15 GOTO CLROE; ************* ****************************** HCLOSE BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTD, 5 GOTO STOPS BTFSC PORTD, 6 GOTO STOPS BSF PORTD, 2 BCF PORTD, 3 REP16 BTFSC PORTD, 5 BTFSC PORTD GOTO DETIENE LLAMADA SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP16 GOTO CLROE; ************************ ****************** ESPERA ESTADO BCF, RP0 ESTADO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO SE DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTD, 4 GOTO STOPS BCF PORTD, 2 BSF PORTD, 3 REP17 BTFSC PORTD, 4 GOTO STOPS LLAME SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RXPD17 GOTO GOTO CLROE; ***************************************** ESTADO HUP BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO SE DETIENE LLAMAR DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTC, 4 BSF PORTB, 0 BSF PORTC, 0 BCF PORTC, 0 BSF PORTC BTFSC PORTC, 4 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP18 GOTO CLROE; ******************************* ************ HDOWN BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTC, 5 GOTO STOPS BSF PORTC, 0 BCF PORTC, 3 REP19 BTFSC PORTC, 5 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP19 GOTO CLROE; *************** *************************** LON BSF PORTB, 7 BSF LDET, 0 GOTO CLROE; ********** ******************************** LOFF BCF PORTB, 7 BCF LDET, 0 GOTO CLROE; ***** ************************************* LFOLLOW BCF STATUS, RP0 BCF STATUS, RP1 BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 BCF PORTB, 7 CALL PWM1OFF CALL PWM2OFF BCF PORTD, 0 BCF PORTD, 1 BCF PORTD, 2 BCF PORTD, 3 BSF MSTOP, 6 REPLF; BANKSEL OPTION_REG; BSF OPTION_REG, 3; BSF OPTION_REG, 3; BS_FREG_FREG;, 3; CLRFWDT BCF STATUS, RP0 BCF STATUS, RP1; BANKSEL INTCON; BCF INTCON, T0IE; BCF INTCON, T0IF; BANKSEL PIE1; BCF PIE1, 6; BCF PIE1, 0; BANKSEL INTCON; BCF INTCON, PCONIE BC PCON, 0 BCF PCON, 1 NOP BSF PCON, 0 BSF PCON, 1 BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP CALL SDELAY CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, ZTOP CALL SDELAY CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, C GOTO LR2G LR1G BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP; CALL BUTTLEVELW SPEED DE MOVIMIENTO; BTFSC MSTOP; 1 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 LLAME PWM1ON LLAME PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 LR1GREP; CALL STALLO1; BTFSC GREP; CALL STALLO1; BTFSC GREP OPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO REPLF CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF REPLF LR2G BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP; LLAMAR BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVVLW PXWX PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 LR2GREP; CALL STALL1; BTFSC MSTOP, 0; GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOPC MOVF LR2 LR2, 0 SUBW, 0 SUBW REPLF CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, C GOTO LR2GREP GOTO REPLF FRONT BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP; CALLO 1 BUTX; SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORT D, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY FROREP; CALL STALL1; BTFSC MSTOP, 0; GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA; CALL LDIN; BTFSC MSTOP1OPS; GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA; LLAMADA LDIN; BTFSC MSTOP1OPS; GOTO STOPS NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FROREP GOTO REPLF GOTO CLROE; *************************** **************** DETENGA BTFSS MSTOP, 4 GOTO STOPA MOVLW 0XCF MOVWF SPEED11 MOVLW 0XB3 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEEDD22 CALLF PWM1 1 CALL SDELAY STOPA BCF STATUS, RP0 BCF STATUS, RP1 BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 BTFSS LDET, 0; BCF PORTB, 7 BCF PORTC, 0 BCF PORTC, 3 CALL PWM1 OFF CALL PWM2 OFF 0 BCF PORTD PORTD, 1 BCF PORTD, 2 BCF PORTD, 3 MOVLW 0X00 MOVWF MSTOP; ******************************** ********* CLROE BANKSEL RCSTA BCF RCSTA, CREN BCF RCSTA, FERR BCF RCSTA, OERR BSF RCSTA, CREN BSF INTCON,GIE BSF INTCON, PEIE GOTO WAIT1; **************************************** *; ******************************************; **** ************************************** STALL1 BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0X70 BTFSS STATUS, C BSF MSTOP STAT, 0 BCF STATUS BC2 BCF STATUS, RP0F STATUS BCF ESTADO, RP0 ESTADO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BSF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF ESTADO, RP0 ESTADO BCF, RP1 CONVERTIR LLAMADA MOVF ADRESH, 0 SUBLW ESTADO BCF 0X40, BSF ADRESH 0 SUBLW 0X40 ESTADO, RP0 ESTADO BCF, RP1 RETURNBUTTLEVEL ESTADO BCF, RP0 ESTADO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 BCF STATUS, 0 RP0 CONVERTIR MOVWF 0 BCF ESTADO, RP0. ESTADO BTFSS, C GOTO BL1 GOTO BL2 BL1 BSF MSTOP, 1 BSF PORTB, 6 BL2 RETURN DARKLIGHT BCF STATUS, RP0 BCF STATUS, RP1 BTFSC LDET, 0 GOTO RETFDL BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0XEE BTFSS STATUS, C BSF PORTBET, 7 RETFONKS ADCONVER MOVDL 0 BCF ADCON0, 7 BSF ADCON0, 6 BSF ADCON0, 0 BSF ADCON0, GO WAITADC BTFSC ADCON0, GO GOTO WAITADC BCF STATUS, RP1 BCF STATUS, RP0 RETURN PWM1ON BANKSEL PR2 MOVLW 0FXFF SPEED MOVWF PR2 BCF MOVWF CCP1CON MOVF VELOCIDAD12, 0 MOVWF CCPR1L ESTADO BSF, RP0 ESTADO BCF, RP1 MOVLW 0XF0 MOVWF ESTADO TRISC BCF, RP0 ESTADO BCF, RP1 BCF T2CON, T2CKPS1 BCF T2CON, BSCONCK2, CCPR2, CCPR2, CCPR2, CCPR2. PR2 MOVLW 0XFF MOVWF PR2 ESTADO BCF, RP0 ESTADO BCF, RP1 MOVF SPEED21, 0 MOVWF CCP2CON MOVF SPEED22, 0 MOVWF CCPR2L BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0XF0 MOVWF STATUS, RP1 STATUS BC0 T2CON, T2CKPS0 BSF T2CON, TMR2ON BSF CCP2CON, 2 BSF CCP2CON, 3 RETURNPW M1OFF BCF CCP1CON, 2 BCF CCP1CON, 3 BSF T2CON, T2CKPS1 BSF T2CON, T2CKPS0 BCF T2CON, TMR2ON MOVLW 0X00 MOVWF CCP1CON MOVLW 0X00 MOVWF CCPR1L BANF STATUS PR2 PR2 MOVWF CCPR1L BANKSEL PR2 PR2 MOVLWUS, RPC PR2 BCM, RPF, 3 BSF T2CON, T2CKPS1 BSF T2CON, T2CKPS0 BCF T2CON, TMR2ON MOVLW 0X00 MOVWF CCP2CON MOVLW 0X00 MOVWF CCPR2L BANKSEL PR2 MOVLW 0X00 MOVWF PR2 BCF STATUS, BS1 RPCON ADCON R STATUS, BSF0 ADCON ADC0 ESTADO ADC0, ADC0 BCF 0X00 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, W ANDLW 0XF0 MOVWF LR1 BCF STATUS, RP0 BCF STATUS, RP1 RETURN LFC2 BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCONF, 4 BSF STATUS, RP0 BC ADCONF RP1 CALL CONVERT MOVF ADRESH, 0 ANDLW 0XF0 MOVWF LR2 BCF STATUS, RP0 BCF STATUS, RP1 RETURN LDIN BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 MOV CALLUS 0X4C ESTADO BTFSC, C GOTO COMP4 BSF MSTOP, 3 ESTADO COMP4 BCF, RP0 ESTADO BCF, RP1 REGRESAR SDELAY CLRF L2 XL3 CLRF L1 XL2 CLRF TMR0 XL1 MOVLW 0XFF SUBWF TMR0, W BTFSS STATUS, C GOTO XL1 MOVLW 0X20 INCF L1 SUBWF L1, W BTFSS STATUS, C GOTO XL2 MOVLW L2 W, SUBWF 0 XL3 REGRESO NOP NOPEND

Segundo premio en el Concurso de Robots Instructables y RoboGames

Recomendado: