Obsah:

The Rock: 8 krokov
The Rock: 8 krokov

Video: The Rock: 8 krokov

Video: The Rock: 8 krokov
Video: Застенчивый мальчик поет в жанре рок-опера – Україна має талант 2021 – Выпуск 8 2024, Septembra
Anonim
The Rock
The Rock

Tento robot je riadený vizuálnym základným programom (cez sériový port) a môže sa pohybovať v troch rôznych rýchlostiach signálom modulovaným šírkou impulzu (PWM) generovaným mikrokontrolérom PIC (16F877). Robota je možné ovládať v dvoch režimoch, v režimoch „normálne ovládanie“a „sledovač svetla“. V normálnom režime riadenia môže robot prenášať predmety s veľkosťou 3 - 18 cm z miesta na druhé do 150 m. keďže v režime sledovania svetla sleduje svetlo v tmavej miestnosti. Použilo sa mnoho senzorov, napríklad svetelné senzory; snímač náklonu, snímanie zastaveného prúdu, snímanie úrovne batérie a niektoré koncové spínače a dotykové senzory používané v ruke. Keď ide na kopec (naklonený), dokáže udržať konštantnú rýchlosť a automaticky zapne svetlo, keď sa zotmie. Aby bol IC tiež v bezpečí, odpojí prúd, keď je zaseknutý, a ruka sa zastaví, keď niečo drží. Použili sa 4 jednosmerné motory ovládané mikrokontrolérom PIC 16F877 a 3 obvodmi ovládača motora. Trvalo to asi 4 mesiace a stálo to asi 600 dolárov

Krok 1: Navrhnite projekt

Navrhnite projekt
Navrhnite projekt
Navrhnite projekt
Navrhnite projekt

v počiatočnej fáze bol poskytnutý návrh projektu. hlavne definovanie blokového diagramu; pozri obrázok.

V tejto fáze je potrebný podrobnejší schéma zapojenia, ale aby sa to uľahčilo, identifikovali sa tieto hlavné moduly: 1. Mikrokontrolér 2. Senzory 3. Motory 4. Bezdrôtový obvod 5. Program pre PC. Bol tiež vykonaný 3D návrh, pozri obrázok.

Krok 2: Vyberte zariadenia a komponenty

V tejto fáze by mal projektant vybrať zariadenia a komponenty potrebné na stavbu robota.

Patria sem: bezdrôtový obvod (moduly vysielača a prijímača FM MAX232, LM331, FM), motory (4 jednosmerné motory), obvod ovládačov motorov (mostík H), mikrokontrolér PIC (16F877), batéria, regulátory napätia (MC7805), mikrospínače, Fotorezistory, snímač náklonu … atď. Je dôležité porozumieť vypočítateľnosti týchto zariadení a ich vzájomnej spolupráci.

Krok 3: Mikrokontrolér

Mikrokontrolér
Mikrokontrolér

Tento krok je najdôležitejším krokom. na začiatku by mali byť identifikované kódy, ktoré budú prijaté a odoslané z PIC.

Začnite pripájať komponenty k príslušným kolíkom PIC a naprogramujte mikrokontrolér. To môže vyžadovať vybudovanie malých obvodov pomocou regulátorov, odporov, senzorov … atď.

Krok 4: Napíšte program pre počítač

Napíšte program pre PC
Napíšte program pre PC
Napíšte program pre PC
Napíšte program pre PC

Program bol napísaný na vizuálnej báze.

Komunikácia bola nadviazaná prostredníctvom RS-232. Použitie MSComm na odoslanie údajov do mikrokontroléra konfiguráciou nastavení (číslo portu, prenosová rýchlosť, paritný počet dátových bitov, stop bity). Použil som 8-bitové údaje s jedným zastavovacím bitom a paritou pri prenosovej rýchlosti 9600 bps.

Krok 5: Vybudujte si telo

Vybudujte si telo
Vybudujte si telo
Vybudujte si telo
Vybudujte si telo

Dôležitý je dobrý dizajn tela. Tiež výber usporiadania kolies, pozri obrázok.

Robot bol zostrojený po uistení, že programy fungujú dobre. Tento krok je možné vykonať aj pred programovaním.

Krok 6: Vytvorte bezdrôtový obvod

Vybudujte bezdrôtový obvod
Vybudujte bezdrôtový obvod

Budovanie bezdrôtového obvodu môže byť nezávislé. V počiatočnej fáze som použil drôt na pripojenie počítača k robotovi a po dokončení robota bol integrovaný bezdrôtový obvod.

Krok 7: Integrujte

Integrovať
Integrovať

Toto je okamih, keď sme integrovali naše komponenty a testovali robota.

Krok 8: Programový kód mikrokontroléra

; *************** FINÁLE ************************************* p = 16f877 zahrnúť radix rozhodcov "V" << 8 | "1"; Konfigurácia čísla verzie _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC; ********** hlavná premenná **************************** cblock 0x20; začiatok oblasť 0 ramena INPUT_VAR L1 L2 X SPEED11 SPEED12 SPEED21 SPEED22 MSTOP LDET LR1 LR2 endc; ********** štart hlavného programu **************** štart BSF STAV, RP0 BCF STAV, 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 0XF TRISD MOVLW 0X07; PORT E IS I MOVWF TRISE BANKSEL OPTION_REG BCF OPTION_REG, T0CS BCF STATUS, RP1 BCF STATUS, RP0; ************************** ******************; ****************************** ************ POČKAJTE 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 BTFS, 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 WOPIT, BCF, 3 BCF, PORT 1, BCF CALL PWM1OFF CALL PWM2OFF CALL DARKLIGHT BTFSC LDET, 0 BSF PORTB; 0; *****************************; ****; ***** *************************************************************************************************** STAV, RP1 MOVF INPUT_VAR, 0; ZASTAVIŤ PREDLOŽTE 0X53 STAV BTFSC, Z GOTO ZASTAVÍ MOVF INPUT_VAR, 0; SVETLO NA SUBLW 0X4E BTFSC STAV, Z GOTO LON MOVF INPUT_VAR, 0; LIGHT OFF SUBLOV 0X5 0; POHÝBAŤ POMALY SPODNÝ 0X66 BTFSC STATUS, Z GOTO FSLOW MOVF INPUT_VAR, 0; MOVE RIGHT SLOW SUBLW 0X72 BTFSC STATUS, Z GOTO RSLOW MOVF INPUT_VAR, 0; MOVE LEFT SLOW SUBLW 0 STAV X6C BTFSC, Z GOTO LSLOW MOVF INPUT_VAR, 0; MOVE BACKWARD SLOW SUBLW 0X62 BTFSC STATUS, Z GOTO BSLOW MOVF INPUT_VAR, 0; MOVE FORWARD MEDIUM SUBLW 0X46 BTFSC STATUS, R GOTO FM STAV, Z GOTO RMED MOVF INPUT_VAR, 0; POHYB ĽAVÝ STREDNÝ PODPIS 0X4C STATUS BTFSC, Z GOTO LMED MOVF INPUT_VAR, 0; POHYB BACKWARD MEDIUM SUBLW 0X42 BTFSC STATUS, Z GOTO BMED MOVF INP; 0 Z GOTO RÝCHLE POHYB VSTUPU_VAR, 0; POHYBUJTE SPRÁVNE RÝCHLO SUBLW 0X57 BTFSC STATUS, Z GOTO RFAST MOVF INPUT_VAR, 0; POHYB VĽAVO RÝCHLO SUBLW 0X56 BTFSC STATUS, Z GOTO LFAST MOVF INPUT_VARB 0, MOV BFAST MOVF INPUT_VAR, 0; RUČNE ZATVORIŤ SUBLW 0X43 BTFSC STATUS, Z GOTO HCLOSE MOVF INPUT_VAR, 0; RUČNE OTVORENÉ SUBLW 0X4F BTFSC STATUS, Z GOTO HOPEN MOVF INPUT_VAR, 0; RUČNÝ SUBLW 0; RUČNE DOLU SUBLW 0X64 BTFSC STATUS, Z GOTO HDOWN MOVF INPUT_VAR, 0; SVETLO SLEDOVANÉ 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; CALL BUTTLEVEL; BTFSC MSTOPFS, 1; GOTO STO LDET, 0; BSF PORTB, 7 NORMÁLNY MOVLW 0XFF MOVWF SPEED11 MOVLW 0XFF MOVWF SPEED21 MOVLF1, RCIF GOTO RXDATA GOTO REP3 GOTO CLROE; ********************************* ** STAV LSLOW BCF, 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 0XFF MOVF SPOV RÝCHLOSŤ 0XCF MOVWF 21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL 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; ******************************** ********** STAV POMALU BCF, RP0 STAV BCF, RP1; Volacia BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW RÝCHLOSŤ MOVWF 11 MOVLW 0X66 MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 VOLAŤ PWM ***************************** STAV BSLOW BCF, STATUS RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO ZASTAVÍ DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 PALL PW PORTB, 2 REP5 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP5 GOTO CLROE; ********************************* ********** F STAV MED BCF, RP0 STAV BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; VOLAŤ BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDETW, 0; BSF PORTB, 7 NORMALMED MOVLW 0XFF MOV RÝCHLOSŤ MOVWF 21 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 STOP BANKEL PIR1 GOTO REP6 PLOVACÍ MOVLW 0XCF MOVWF SPEED12 MOVLW 0XCF STP 0 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALMED GOTO REP7 GOTO CLROE; ********************************* ************ STAV ČERVENÉHO BCF, RP0 STAV BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORT B, 7 MOVLW 0XFF MOVWF RÝCHLOSŤ BTFSC PIR1, RCIF GOTO RXDATA GOTO REP8 GOTO CLROE; ********************************** **** STAV LMED BCF, 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 MOVF 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 MSTO PPS, BOTO REP9 GOTO CLROE; ****************************************, STAV RP0 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 0XFF MOVWF SPEED11 MOVLW 0X7F MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 CALL PWM REP10 GOTO CLROE; ******************************************, STAV RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XEF MOVWF SPE MOVWF SPEED21 MOVLW 0x7F MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF Portbou, 1 BSF Portbou, 2 CALL SDELAY NORMALFAST 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 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 GOTOP11 AST MOVLW 0XCF MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED22 PALL, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALFAST GOTO REP12 GOTO CLROE; ******************************** ******** STAV RFF BCF, STAV RP0 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 0XFF MOV SPEED11 MOVLW 0X99 MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1 PTS GOTO REP13 GOTO CLROE; ****************************** 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 Portbou, 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 Portbou, 1 BCF Portbou, 2 CALL SDELAY MOVLW 0xFF MOVWF SPEED11 MOVLW 0X4C MOVWF SPEED12 MOVLW RÝCHLOSŤ 0XEF MOVWF21 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 GFS PIR1 *********************************************************************************** RP1 MOVLW MSTOP BCF LDET, 0; BST 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 MOVWE 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 STAV BCF, RP0 STAV BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; VOLAŤ 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 GOTO STOPS BTFSC PORTD GOTO STOP ZAVOLAJTE SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP16 GOTO CLROE; ************************** ****************** STAV HOPEN BCF, RP0 STAV 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, 4 GOTO STOPY BCF PORTD, 2 BSF PORTD, 3 REP17 BTFSC PORTD, 4 GOTO STOPY CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO CLROE; ******************************************************** STAV RP0 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 PORTC, 4 GOTO STOPS BCF PORTC, 3 BSF BTFSC PORTC, 4 GOTO STOPY BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP18 GOTO CLROE; ********************************* *********** STAV HDOWN BCF, STAV RP0 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 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; ***** ************************* ***** 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, 3; STAV CLRFWDT BCF, RP0 STAV BCF, RP1; BANKSEL INTCON; BCF INTCON, T0IE; BCF INTCON, T0IF; BANKSEL PIE1; BCF PIE1, 6; BCF PIE1, 0; BANKSEL INTCON; BCF INTCON, GIE BANKS, 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, Z GOTO 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; VOLAŤ BUTTLEVOPS; 1 RÝCHLOSŤ 0X66 MOVWF12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 LR1GREP; STALL GREEN1; 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 SUBWFS LR1, VYPLNIŤ LR2G BCF STAV, RP0 MOVWF MSTWF POV 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 NOP MOVF LR2, 0 SUBWF LR1, 0 ODKAZOVAŤ VOLAŤ LFC1 NOP VOLAŤ LFC2 NOP POHYB LR2, 0 SUBWF LR1, 0 BTFSC STATUS, C GOTO LR2GREP GOTO REPLF PREDNÝ STAV BCF, STAV RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP; VOLAŤ BUTTLEVEL; BT 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 MSTOP, 3; GOTO STOPS CALL NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FROREP GOTO REPLF GOTO CLROE; ***************************** *************** ZASTAVÍ BTFSS MSTOP, 4 GOTO STOPA MOVLW 0XCF MOVWF SPEED11 MOVLW 0XB3 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEEDON PTC1 CW PWM 1 STAV ZATVORENIA STABILIZÁCIE BCF, STAV RP0 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 BCF PORT 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; ************************************* *; ******************************; ****; ***** ******************************************************************************* 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 BCF STATUS, STATUS, STAV RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BSF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0X40, STAV, RP0 BCF STAV, RP1 RETURNBUTTLEVEL BCF STAV, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 BCF STATUS, RP0 BCF STAT, RP0 BCF STATUS STAV 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, STATUS REFERENCIE RP1, MICROFINÁCIA RX 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 STOVAT PR2, MOVWF CCP1CON SPEED12, 0 MOVWF CCPR1L STATUS 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 BCF, STF 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 MOVWF PR2 BCF STATUS, RP1 BCF STATUS, RP0 RETURNPWM2OFF BCF CCP2CON, 2 BCF CCP2CON, 3 BSF T2CON, T2CON, BC2, F2 STAV 5 BCF, STAV RP0 BCF, RP1 VÝZVA KONVERZOVANÉHO POHYBU, W ANDLW 0XF0 MOVWF LR1 BCF STATUS, RP0 BCF STATUS, RP1 NÁVRAT LFC2 BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BSF ADCON, 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 BCF STATUS, RP0 BCF STATUS, STATUS 0X4C BTFSC, C GOTO COMP4 BSF MSTOP, 3 COMP4 BCF STATUS, RP0 BCF STATUS, RP1 RETURN 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 0X10 INC XL3 NÁVRAT NOP NOPEND

Druhá cena v súťaži robotov Instructables a RoboGames

Odporúča: