Sommario:

La Roccia: 8 Passi
La Roccia: 8 Passi

Video: La Roccia: 8 Passi

Video: La Roccia: 8 Passi
Video: Как ввязываться в обвязку идеальной восьмёркой каждый раз 2024, Luglio
Anonim
La roccia
La roccia

Questo robot è controllato da un programma visual basic (tramite la porta seriale) e può muoversi in tre diverse velocità da un segnale modulato a larghezza di impulso (PWM) generato da un microcontrollore PIC (16F877). Il robot può essere utilizzato in due modalità, modalità "controllo normale" e "tracker luce". Nella modalità di controllo normale, il robot può trasportare oggetti di dimensioni comprese tra 3 e 18 cm da un luogo all'altro entro 150 m. considerando che nella modalità inseguitore di luce, segue la luce in una stanza buia. Sono stati utilizzati molti sensori, come i sensori di luce; sensore di inclinazione, rilevamento della corrente di stallo, rilevamento del livello della batteria e alcuni finecorsa e sensori tattili utilizzati nella mano. Può mantenere la sua velocità costante quando va su una collina (inclinata) e accende automaticamente la luce quando diventa buio. Inoltre, per mantenere l'IC al sicuro, disconnette la corrente quando è bloccato e la mano si ferma quando si tiene qualcosa. Sono stati utilizzati 4 motori CC controllati da un microcontrollore PIC 16F877 e 3 circuiti di pilotaggio del motore. Ci sono voluti circa 4 mesi e costa circa 600 $

Passaggio 1: progettare il progetto

Disegna il progetto
Disegna il progetto
Disegna il progetto
Disegna il progetto

nella fase iniziale è stato fornito un disegno del progetto. principalmente, definendo lo schema a blocchi; vedere la figura.

In questa fase è necessario uno schema circuitale più dettagliato, tuttavia, per facilitare ciò, i principali moduli identificati sono stati: 1. Microcontrollore 2. Sensori 3. Motori 4. Circuito wireless 5. Programma PC. È stato eseguito anche un design 3d, vedere la figura.

Passaggio 2: scegli i dispositivi e i componenti

In questa fase, il progettista dovrebbe scegliere i dispositivi e i componenti necessari per costruire il robot.

Ciò include: il circuito wireless (MAX232, LM331, moduli trasmettitore e ricevitore FM), motori (4 motori DC), circuito driver motori (H-bridge), il microcontrollore PIC (16F877), batteria, regolatori di tensione (MC7805), microinterruttori, Fotoresistenze, Sensore di inclinazione … ecc. È importante comprendere la computabilità di questi dispositivi e come funzionano insieme.

Passaggio 3: il microcontrollore

Il Microcontrollore
Il Microcontrollore

Questo passaggio è il passaggio più importante. all'inizio vanno individuati i codici che verranno ricevuti e trasmessi dal PIC.

Iniziare a collegare i componenti ai pin appropriati del PIC e programmare il microcontrollore. Ciò potrebbe richiedere la costruzione di piccoli circuiti utilizzando regolatori, resistori, sensori … ecc.

Passaggio 4: scrivere il programma per PC

Scrivi il programma per PC
Scrivi il programma per PC
Scrivi il programma per PC
Scrivi il programma per PC

Il programma è stato scritto su Visual Basic.

La comunicazione è stata stabilita tramite RS-232. Utilizzo di MSComm per inviare i dati al microcontrollore configurando le impostazioni (numero di porta, baud rate, numero di parità dei bit di dati, bit di stop). Ho usato dati a 8 bit con un bit di stop e parità a una velocità di trasmissione di 9600 bps.

Passaggio 5: costruire il corpo

Costruisci il corpo
Costruisci il corpo
Costruisci il corpo
Costruisci il corpo

Un buon design del corpo è importante. Scegliendo anche la disposizione delle ruote, vedere la figura.

Il robot è stato costruito dopo essersi assicurati che i programmi funzionassero correttamente. Questo passaggio può essere eseguito anche prima della programmazione.

Passaggio 6: costruire il circuito wireless

Costruisci il circuito wireless
Costruisci il circuito wireless

La costruzione del circuito wireless può essere indipendente. Nella fase iniziale, ho utilizzato un cavo per collegare il PC con il robot e, dopo aver finalizzato il robot, è stato integrato il circuito wireless.

Passaggio 7: integrazione

Integrare
Integrare

Questo è il momento in cui abbiamo integrato i nostri componenti e testato il robot.

Passaggio 8: codice programma del microcontrollore

;*************** FINALE****************************** elenco p=16f877 include radix decidlocs "V"<<8 | "1"; Versione No.config _CP_OFF&_PWRTE_OFF&_WDT_OFF&_XT_OSC;********** variabile principale ************************** cblock 0x20;inizio di banco 0 area ram INPUT_VAR L1 L2 X SPEED11 SPEED12 SPEED21 SPEED22 MSTOP LDET LR1 LR2 endc;********** inizio del programma principale *************** start BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X40 MOVWF ADCON1 MOVLW 0XFF;PORT A IS I MOVWF TRISA MOVLW 0X00;PORT B IS O MOVWF TRISB MOVLW 0XF0;PORT C IS I/O MOVWF TRISC MOVLW;MOPORT DWF I/XF I; TRISD MOVLW 0X07;PORT E IS I MOVWF TRISE BANKSEL OPTION_REG BCF OPTION_REG, T0CS BCF STATUS, RP1 BCF STATUS, RP0;************************* ***************;****************************** ************ ATTENDERE 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, RCIF GOTO WAIT1 BCF MSTOP, 3 BCF PORTB, 4 BCF PORTB, CALL PWM1OFF CALL PWM2OFF CALL DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7RXDATA;BANKSEL RCSTA;BTFSC RCSTA, OERR;GOTO STOPS CALL PWM1OFF CALL PWM2OFF CALL DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7 MO BANKSELR PIRCR1 BCFVFSEL 0;*********************************************;**** *************************************** MOVWF INPUT_VAR MOVLW 0X00 MOVWF RCREG STATO BCF, RP0 BCF STATUS, RP1 MOVF INPUT_VAR, 0;STOP SUBLW 0X53 BTFSC STATO, Z GOTO STOP MOVF INPUT_VAR, 0;LIGHT ON SUBLW 0X4E BTFSC STATO, Z GOTO LON MOVF INPUT_VAR, 0;LIGHT OFF SUBLWINPUT_VAR, ZTFSC STAT 0;SPOSTA IN AVANTI SLOW SUBLW 0X66 BTFSC STATUS, Z GOTO FSLOW MOVF INPUT_VAR, 0;SPOSTA A DESTRA LENTO SUBLW 0X72 BTFSC STATUS, Z GOTO RSLOW MOVF INPUT_VAR, 0;SPOSTA A SINISTRA LENTO SUBLW 0 X6C BTFSC STATO, Z GOTO LSLOW MOVF INPUT_VAR, 0;SPOSTA INDIETRO LENTO SUBLW 0X62 BTFSC STATO, Z GOTO BSLOW MOVF INPUT_VAR, 0;SPOSTA IN AVANTI MEDIUM SUBLW 0X46 BTFSC STATUS, Z GOTO MEDIA_LVARWRIGHT, 0 INPUT STATUS, Z GOTO RMED MOVF INPUT_VAR, 0;SPOSTA A SINISTRA MEDIUM SUBLW 0X4C BTFSC STATUS, Z GOTO LMED MOVF INPUT_VAR, 0;SPOSTA INDIETRO MEDIUM SUBLW 0X42 BTFSC STATUS, Z GOTO BMED MOVF INPUT_VARSC FORWARD STATUS, 0XMOS BTF STATUS; Z GOTO VELOCE MOVF INPUT_VAR, 0;SPOSTA A DESTRA VELOCE SUBLW 0X57 BTFSC STATO, Z GOTO VELOCE MOVF INPUT_VAR, 0;SPOSTA A SINISTRA VELOCE SUBLW 0X56 BTFSC STATUS, Z GOTO VELOCE MOVF INPUT_VAR, 0;SPOSTA SUBSCWBACK BFAST MOVF INPUT_VAR, 0;HAND CLOSE SUBLW 0X43 BTFSC STATUS, Z GOTO HCLOSE MOVF INPUT_VAR, 0;HAND UP SUBLW 0X4F BTFSC STATO, Z GOTO HOPEN MOVF INPUT_VAR, 0;HAND UP MOVF INPUT_VAR 0X75 BTFSC;HAND DOWN SUBLW 0X64 BTFSC STATUS, Z GOTO HDOWN MOVF INPUT_VAR, 0;LIGHT FOLOWE R SUBLW 0X54 STATO BTFSC, Z GOTO LFOLLOW;**************************************** ********************************************** VAI A CLROEFSLOW; BANKSEL RCSTA;BCF RCSTA, OERR;BCF RCSTA, CREN;NOP;BSF RCSTA, CREN STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP;BCF LDET, 0;CHIAMATA BUTTLEVEL;BTFSC MSTOP CHIARO, 1 CTFSCOTO;G LDET, 0;BSF PORTB, 7 NORMALSLOW MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTAPSFD,SCF BAPORTB, 1 BF 2 BF PORTSEL, RCIF GOTO RXDATA GOTO REP3 GOTO CLROE;********************************************* **LSLOW BCF STATUS, RP0 BCF STATUS, RP1;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW SPWFED11 MOVWF12 MOVWF12 0XCF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON PORTA BSF, 0 PORTA BCF, 1 PORTA BSF, 1 PORTA BCF TB, 2 REP4 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP4 GOTO CLROE; ********************************* **********RSLOW STATO BCF, RP0 STATO BCF, RP1;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP 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 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB; GOTO GOTO35 PIRROD BTF; **************************** BSLOW STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRESTA CHIAMATA DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PSFB PORT 2,W B PORT 1 B BC 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;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 NORMALMED MOVLWF MOVLWF SWPE11 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 GOTO STOPS BANKSEL PIR1 PORTSSIFD BTFSC PIR GOTO REP6 PLUSEMED MOVLW 0XCF MOVWF SPEED11 MOVLW 0XCC MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XCC MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB CTFDESTOP, 1 BSF CTF PORTB, 1 BSF PORTB, 2 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALMED GOTO REP7 GOTO CLROE;****************************** *************RMED STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORT B, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVLW SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB BSTOP, 1 BSF PORTB, 1 BSF REPALL BTFB, 2 BSF REP8 CALL PWM1ON CALL PWM2ON BTFSC PIR1, RCIF GOTO RXDATA GOTO REP8 GOTO CLROE;**************************************** ****LMED 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 MOVWVL SPEEDFF 0X MOVWL SPEEDFF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP9;CALL STALL1;BTFSC MSTOP, 0;BANKGOTO IRX REP9 GOTO CLROE;********************************************* STATO BCF BMED, 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 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X7F MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP10 CALL STALL1, PSTOPPTOIFOTOS, 0 BTFSCIR PORTD REP10 GOTO CLROE;******************************************* STATO BCF FAST, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW MOPEDEF SWFED7 MOVLW 0XWFED MOVVWF S MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY NORMLFAST MOVLW 0XCF MOVWF SPEED11 MOVLWFXWALLPEED22 MOVLWALLPED2 MOVLWVWALLPED12 MOWFVWF BC 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 PORTD, 7 GOTO REP11 PLUS AST MOVLW 0XCF MOVWF SPEED11 MOVLW 0XFF MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XFF MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB1 PTF STOP1 BSF PORTB, 1 BSF PORTB, 1 BSF PORT BTF, 1 BSF CIRSC, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALFAST GOTO REP12 GOTO CLROE;*********************************** ******** VELOCE STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVWFW 0XFF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 REP13 PTOTOF1, BTFSC STOPSEL, BTFSC STOPSEL, BTFSCIR STOPSEL 1 BTFSCIR GOTO REP13 GOTO CLROE;******************************************* VELOCE BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF MOVLPEED MOWLVL MOVLPEFF11 MOVWF SPEED, 2 CALL SPEED 0XEF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP14 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BANKSEL PIR1 GOTO GOTO BTFSC PIR1, RCDP ***************************************** BFAST STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XDF MOVWF SPEED11 MOVLW 0X99 MOVLVWFWPEED12 MOVLVWFPEED 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 1 CALL CALL PWM 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 STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTD, 5 GOTO STOP BTFSC PORTD, 6 GOTO STOP BSF PORTD, 2 BCF PORTD, 3 REP16 BTFSC PORTD, 5 GOTO STOPS BTFSC GOTO STOP CHIAMA SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOP BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP16 GOTO CLROE;************************* ******************HOPEN STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTD, 4 GOTO STOP BCF PORTD, 2 BSF PORTD, 3 REP17 BTFSC PORTD, 4 GOTO STOP CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOP BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RX17D VAI A CLROE;******************************************* STATO BCF HUP, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTC, 4 GOTO 18 STOP BSF PORTC, 3 BSF PORTC BTFSC PORTC, 4 GOTO STOP BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP18 GOTO CLROE;****************************** ************HDOWN STATO BCF, RP0 STATO BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOP CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTC, 5 GOTO STOP BSF PORTC, 0 BCF PORTC, 3 REP19 BTFSC PORTC, 5 GOTO STOP 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 STATO BCF, RP0 STATO BCF, RP1 BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 BCF PORTAB, 7 CALL PWM1OFF CALL PWM2OFF BCF PORTAD, 0 BCF PORTAD, 1 BCF PORTAD, 2 BCF PORTAD, 3 BSF MSTOP, 6 REPLF;BANKSEL OPTION_REG;BSF OPTION_REG, 3;BSF OPTION_REG_REG, 3;BSF 3 OPTION_REG, 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;GBCF BANKSEL PCON, BCF BANKSEL INTCON, 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 STATO, Z GOTO FRONT 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 BUTTLEVEL;BTFSC MOFFLVWSTOP, 1 STOP 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON PORTA BSF, 0 PORTA BCF, 1 PORTA BSF, 1 PORTA BCF, 2 LR1GREP;CALL STALL1;BTF;SC MSTOP 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 LR1, 0 BTFSS STATUS1 CREPLF REPLF LR2G BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 PX22 MOVALLVLWF SWPEED PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 LR2GREP;CALL STALL1;BTFSC MSTOP, 0;GOTO ARRESTA BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LRUS, 0 BTFSC REPLF CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATO, C GOTO LR2GREP GOTO REPLF FRONT BCF STATO, RP0 BCF STATO, RP1 MOVLW 0X00 MOVWF MSTOP;CALL BUTTLEVEL;FX;SC MSTOP 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 ARRESTA BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA;CALL LDIN;BTFSC MSTOP, 3;GOTO;GOTO. NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FOREP GOTO REPLF GOTO CLROE;****************************** **************** ARRESTA BTFSS MSTOP, 4 GOTO STOPA MOVLW 0XCF MOVWF SPEED11 MOVLW 0XB3 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BC 1 RITARDO CHIAMATA STOPA STATO BCF, RP0 STATO BCF, RP1 BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 BTFSS LDET, 0;BCF PORTB, 7 BCF PORTC, 0 BCF PORTC, 3 CALL PWM1OFF CALL PWM2OFF 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 STATO BCF, RP0 STATO BCF, 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, 0 TURN BCF STATUS, RP0 BCF1 RESTATUS, BCST STATO, RP0 BCF STATO, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BSF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF STATO, RP0 BCF STATO, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0X40 BTFSS MSF STATO STATUS, RP0 BCF STATUS, RP1 RETURNBUTTLEVEL BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 BCF STATUS, RPH, 0 BCF STATO CALLW CONVERT, RP7 STATO BTFSS, C GOTO BL1 GOTO BL2 BL1 BSF MSTOP, 1 BSF PORTB, 6 BL2 RETURN BUIO STATO BCF, RP0 STATO BCF, 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 PORTB, 7 RETFDL RETURNCONVERT CONVERTITORE BANKVLWF MOVSELW 0X BCF ADCON0, 7 BSF ADCON0, 6 BSF ADCON0, 0 BSF ADCON0, GO WAITADC BTFSC ADCON0, GO GOTO WAITADC BCF STATUS, RP1 BCF STATUS, RP0 RETURNPWM1ON BANKSEL PR2 MOVLW 0XFF MOVWF PR2 BCF STATUS, RP1 BCF STATUS, RP0 BCF MOVWF CCP1CON MOVF SPEED12, 0 MOVWF CCPR1L BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0XF0 MOVWF TRISC BCF STATUS, RP0 BCF STATUS, RP1 BCF T2CON, T2CKPS1 BCF T2CON, T2CKPS1 BCF T2CON, T2MRCON, BSF T2CON, T2CKPS0 B CWMSFONNK 2CKPS0 B CWMSF PR2 MOVLW 0XFF MOVWF PR2 BCF STATUS, RP0 BCF STATUS, RP1 MOVF SPEED21, 0 MOVWF CCP2CON MOVF SPEED22, 0 MOVWF CCPR2L BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0XF0 MOVWF TRP STATUS BCF1 BCF 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 BANKSEL PR2 MOVLW 0X00 MOVWFUS PR2 RESTAT BC, 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, RP1 BCF ADLF 0X ADFC BANKSEL, RP1 BCF 0X00 MOVWF PR2 BCF STATUS, RP1 BCF RESTATUS, ADFC0 BSF ADFC 1RP 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 ADCON0, 4 BSF ADCON0, RP BCF STATUS RP1 CHIAMATA 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 BCF STATO BCF CONVERT, RP1 CALLW CONVERT ADCON0 BCF 0X4C STATO BTFSC, C GOTO COMP4 BSF MSTOP, 3 COMP4 STATO BCF, RP0 STATO BCF, RP1 RETURN SDELAY CLRF L2 XL3 CLRF L1 XL2 CLRF TMR0 XL1 MOVLW 0XFF SUBWF TMR0, W BTFSS STATO, C GOTO XL1 MOVLW 0X20 INCF L1 SUBWF L1, W BTFSS STATUS, C GOTO XL2 MOVLW 0X10 INCF L2 SUBWF L2, STATO W CTFSS XL3 RESO NOP NOPEND

Secondo Premio al Concorso Robot Instructables e RoboGames

Consigliato: