Съдържание:

Скалата: 8 стъпки
Скалата: 8 стъпки

Видео: Скалата: 8 стъпки

Видео: Скалата: 8 стъпки
Видео: Устрашающий танец — Форсаж 8 (фильм 2017) Сцена 1/7 2024, Юли
Anonim
Скалата
Скалата

Този робот се управлява от визуална основна програма (през серийния порт) и може да се движи с три различни скорости чрез сигнал с широчина на импулса (PWM), генериран от микроконтролер PIC (16F877). Роботът може да работи в два режима, режими „нормално управление“и „проследяване на светлината“. В нормалния режим на управление роботът може да носи обекти с размери от 3 - 18 см от място на друго в рамките на 150 м. като има предвид, че в режим на проследяване на светлината, той следва светлината в тъмна стая. Използвани са много сензори, като например сензори за светлина; сензор за накланяне, отчитане на тока на застой, измерване на нивото на батерията и някои крайни превключватели и сензори за докосване, използвани в ръката. Той може да поддържа скоростта си постоянна, когато се качва на хълм (наклонен) и автоматично включва светлината, когато стане тъмно тъмно. Също така, за да е в безопасност на ИС, той изключва тока, когато е заседнал, а ръката спира, когато държи нещо. Използвани са 4 DC двигателя, управлявани от микроконтролер PIC 16F877 и 3 вериги за драйвер на мотор. Това отне около 4 месеца и струва около 600 $

Стъпка 1: Проектирайте проекта

Проектирайте проекта
Проектирайте проекта
Проектирайте проекта
Проектирайте проекта

на началния етап беше предоставен дизайн на проекта. главно, определяне на блоковата диаграма; виж фигурата.

На този етап се изисква по -подробна електрическа схема, но за да се улесни това, основните идентифицирани модули бяха: 1. Микроконтролер 2. Сензори 3. Мотори 4. Безжична схема 5. Програма за компютър. Беше направен и 3D дизайн, вижте фигурата.

Стъпка 2: Изберете устройствата и компонентите

На този етап дизайнерът трябва да избере устройствата и компонентите, необходими за изграждането на робота.

Това включва: безжичната верига (MAX232, LM331, FM предавател и приемни модули), двигатели (4 DC двигателя), верига на драйвери на двигатели (H-мост), микроконтролер PIC (16F877), батерия, регулатори на напрежение (MC7805), микропревключватели, Фоторезистори, Сензор за наклон … и т.н. Важно е да се разбере изчислимостта на тези устройства и как работят заедно.

Стъпка 3: Микроконтролерът

Микроконтролерът
Микроконтролерът

Тази стъпка е най -важната стъпка. в началото трябва да се идентифицират кодовете, които ще бъдат получени и предадени от PIC.

Започнете да свързвате компонентите към съответните щифтове на PIC и програмирайте микроконтролера. Това може да изисква изграждане на малки вериги с помощта на регулатори, резистори, сензори … и т.н.

Стъпка 4: Напишете компютърната програма

Напишете компютърната програма
Напишете компютърната програма
Напишете компютърната програма
Напишете компютърната програма

Програмата е написана на визуална основа.

Комуникацията е установена чрез RS-232. Използване на MSComm за изпращане на данните към микроконтролера чрез конфигуриране на настройките (номер на порт, скорост на предаване, паритетен брой битове данни, стоп битове). Използвах 8-битови данни с един стоп бит и паритет при скорост на предаване 9600 bps.

Стъпка 5: Изградете тялото

Изградете тялото
Изградете тялото
Изградете тялото
Изградете тялото

Добрият дизайн на тялото е важен. Също така избирайки подреждането на колелата, вижте фигурата.

роботът е създаден, след като се увери, че програмите работят добре. Тази стъпка може да се направи и преди програмиране.

Стъпка 6: Изградете безжичната верига

Изградете безжичната верига
Изградете безжичната верига

Изграждането на безжичната верига може да бъде независимо. В началния етап използвах проводник за свързване на компютъра с робота и след финализиране на робота безжичната верига беше интегрирана.

Стъпка 7: Интегрирайте

Интегрирайте
Интегрирайте

Това е моментът, в който интегрирахме нашите компоненти и тествахме робота.

Стъпка 8: Програмен код на микроконтролера

; *************** ОКОНЧАТЕЛЕН ******************************** списък p = 16f877 включва радикс decidlocs "V" << 8 | "1"; Версия No.config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC; ********** основна променлива *************************** cblock 0x20; начало на bank 0 ram area INPUT_VAR L1 L2 X SPEED11 SPEED12 SPEED21 SPEED22 MSTOP LDET LR1 LR2 endc; ********** старт на основната програма *************** старт BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X40 MOVWF ADCON1 MOVLW 0XFF; PORT A IS I MOVWF TRISA MOVLW 0XF0; PORT C IS I/O MOVWF TRISC MOVW TRISD MOVLW 0X07; PORT E IS I MOVWF TRISE BANKSEL OPTION_REG BCF OPTION_REG, T0CS BCF STATUS, RP1 BCF STATUS, RP0; ************************* ******************; ******************************* ************ ИЗЧАКАЙТЕ 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, SPC RCSTA, SPC, 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, PCF, PCF, PC ПОЗВАНЕ PWM1OFF CALL PWM2OFF CALL DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7RXDATA; BATKSEL RCSTA; 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; LIGHT ON SUBLW 0X4E BTFSC STATUS, Z GOTO LON MOVF INPUT_VAR, 0 LUFF 0; ДВИЖЕТЕ НАПРЕД НАБАВЕН SUBLW 0X66 BTFSC СЪСТОЯНИЕ, Z GOTO FSLOW MOVF INPUT_VAR, 0; ПРЕМЕСТВАНЕ НАДЯСНО ЗАБАВЕН SUBLW 0X72 BTFSC СТАТУТ, Z ОТЛИЧАЙТЕ ЗАБАВЛЕНО MOVF INPUT_VAR, 0; MOVE LEFT SOWL SUBLW X6C BTFSC STATUS, Z GOTO LSLOW MOVF INPUT_VAR, 0; MOVE BACKWARD SLOW SUBLW 0X62 BTFSC STATUS, Z GOTO BSLOW MOVF INPUT_VAR, 0; ПРЕМЕСТВАНЕ НАПРЕД MEDIUM SUBLW 0X46 BTFVATS FUT STATUS, Z GOTO RMED MOVF INPUT_VAR, 0; ПРЕМЕСТВАНЕ НАЛЯВО СРЕДЕН SUBLW 0X4C BTFSC СЪСТОЯНИЕ, Z GOTO LMED MOVF INPUT_VAR, 0; Z GOTO FFAST MOVF INPUT_VAR, 0; ПРЕМЕСТВАНЕ НАДЯСНО БЪРЗО SUBLW 0X57 BTFSC СЪСТОЯНИЕ, Z GOTO RFAST MOVF INPUT_VAR, 0; ПРЕМЕСТВАНЕ НАЛЯВО БЪРЗО SUBLW 0X56 BTFSC СТАТУТ, Z GOTO LFAST FOVSTV MOVF BFAST MOVF INPUT_VAR, 0; HAND CLOSE SUBLW 0X43 BTFSC STATUS, Z GOTO HCLOSE MOVF INPUT_VAR, 0; HAND OPEN SUBLW 0X4F BTFSC STATUS, Z GOTO HOPEN MOVF INPUT_VAR, 0 HUP, VPW, HUP; РЪК НАДОЛУ SUBLW 0X64 BTFSC СЪСТОЯНИЕ, Z ОТЛИЧВА 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; CALL BUTTLEVEL; BTFT CSC LDET, 0; NORMALSLOW MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM PBFF, RCIF GOTO RXDATA GOTO REP3 GOTO CLROE; *************************************** ** LSLOW BCF СТАТУС, RP0 BCF СТАТУС, RP1; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO СПИРА MOVLW 0x00 MOVWF MSTOP BCF LDET, 0 CALL Дарклайт BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0xFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 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; ********************************* ********** RSLOW 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 0XCF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 1 BSF PORT BTS PFR **************************** BSTOW BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; ПРЕКРАТЯВАЙТЕ ТЕМНАТА BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0X99 COVWFF PED 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 NORMALFWMWMFWMWMWMWMWMWMWMWMWMWMWMFWMWMWMWMWMWMWMWMWMWMWMW, MOV, MF, MOV 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 POPT BTS 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 PORTB 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; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORT B, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 1 BCF POP 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 MOVLW MOVFWW MOVFW WW 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 REP9 GOTO CLROE; ***************************************** BMED BCF STATUS, RP0 СТАТУТ BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; ОБАВКА НА БУТЕЛИ; BTFSC MSTOP, 1; GOTO СПИРАНЕ 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, 2 REPTO CTS REP10 GOTO CLROE; ***************************************** FFAST BCF STATUS, RP0 СЪСТОЯНИЕ на BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4; ОТВОРЕНО БУТЛЕВО; BTFSC MSTOP, 1; GOTO СПИРАНЕ ПОЗВЪНЯВАНЕ НА ТЪМКА BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XW MOVE FOVE MOVE MOVWF SPEED21 MOVLW 0x7f MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 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 BTFS PTS AST MOVLW 0XCF MOVWF SPEED11 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XFF MOVWF SPEED22 CALL PWM1ON CALL PSTD, 1 BSF POP, BSC, 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; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLWX SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BSF PORTB, 2 REF. GOTO REP13 GOTO CLROE; ***************************************** LFAST 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 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 PORTB, 1 BCF PORTB, 2 CALL SDELAY MOVLW 0xFF MOVWF SPEED11 MOVLW 0X4C MOVWF SPEED12 MOVLW 0XEF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 2 REP14 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BOTS ROPT **************************************** BFAST 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 MOVLW 0XDF MOVWF SPEED11 MOVLW 0XV MOVE MOVE 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 MOVWFWW SPE22 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; CALL 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 GOTO STOPS CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP16 GOTO CLROE; ************************* ****************** HOPEN 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 PORTD, 4 GOTO STOPS BCF PORTD, 2 BSF PORTD, 3 REP17 BTFSC PORTD, 4 GOTO STOPS CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSC PIRT GOTO CLROE; ***************************************** HUP 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, 4 GOTO STOPS BCF 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, BSF OPTION_, 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, GIE BANKEL, 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 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 BUTTLEVLOW; MTFV 0X66 MOVWF 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 LR1GREP; CALL STALL1; 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 LRTO, SUB REPLF LR2G BCF СЪСТОЯНИЕ, RP0 BCF СЪСТОЯНИЕ, RP1 MOVLW 0X00 MOVWF MSTOP; ОБИВАНЕ НА БУТЛЕВО; BTFSC MSTOP, 1; 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 LRTO, SUB 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; MOVO 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 MSTOP1, GPS NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FROREP GOTO REPLF GOTO CLROE; *************************** ********** 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 PWM1OFF CALL PWM2OFF BCF 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 MSTOP2, BCF STATUS, 0 BCF STATUS, RP0 BCF STATUS, 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 SUBTFS 2 BTS СЪСТОЯНИЕ, RP0 BCF СТАТУТ, RP1 СЪСТОЯНИЕ НА ВРЪЩАНИЯ, RP1 СЪСТОЯНИЕ НА ВРЪЩАНЕТО, RP0 СЪСТОЯНИЕ НА RPF, RP1 MOVLW 0X00 MOVWF MSTOP БАНКСЕЛ ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 BCF STATUS, RP0 BCF, RP0 BCF, RP0 BCF BTFSS STATUS, C GOTO BL1 GOTO BL2 BL1 BSF MSTOP, 1 BSF PORTB, 6 BL2 ВРЪЩАНЕ НА ТЪМНИ СВЕТИ BCF STATUS, RP0 BCF STATUS, RP1 BTFSC LDET, 0 GOTO RETFDL БАНКСЕЛ ADCON0 BCF ADCON0, 3 BCF ADCON0, 5 BCF STATUS, RP1 COV CONVERT MOVF ADRESH, 0 SUBLW 0XEE BTFSS STATUS, C BSF PORTBET 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 БАНКСЕЛ PR2 MOVLW 0XFFF MOVW RPV 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, BS2 TCC PR2 MOVLW 0XFF MOVWF PR2 BCF STATUS, RP0 BCF STATUS, RP1 MOVF SPEED21, 0 MOVWF CCP2CON MOVF SPEED22, 0 MOVWF CCPR2L BSF СТАТУТ, RP0 BCF STATUS, RP1 MOVLW 0XF0 RPC2 RPCFT BCFT 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 СТАТУС, RP1 BCF СТАТУС, RP0 RETURNPWM2OFF BCF CCP2CON, 2 BCF CCP2CON, 3 BSF T2CON, T2CKPS1 BSF T2CON, T2CKPS0 BCF T2CON, TMR2ON MOVLW 0X00 MOVWF CCP2CON MOVLW 0X00 MOVWF CCPR2L БАНКСЕЛ PR2 МОВЛВ 0X00 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, W ANDLW 0XF0 MOVWF LR1 BCF STATUS, RP0 BCF STATUS, RP1 ВРЪЩАНЕ LFC2 БАНКСЕЛ ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BSF BCF, BCF RP1 CALL CONVERT MOVF ADRESH, 0 ANDLW 0XF0 MOVWF LR2 BCF STATUS, RP0 BCF STATUS, RP1 ВРЪЩАНЕ LDIN БАНКСЕЛ ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STFUS, RP0 BCF STF 0X4C BTFSC СТАТУТ, C ОТПЪЛНЕТЕ COMP4 BSF MSTOP, 3 COMP4 BCF STATUS, RP0 BCF STATUS, RP1 ВЪРН. XL3 ВРЪЩАНЕ НЕ ЗАКРИВА

Втора награда в състезанието за роботи с инструктори и RoboGames

Препоръчано: