Table des matières:

Le Rocher : 8 marches
Le Rocher : 8 marches

Vidéo: Le Rocher : 8 marches

Vidéo: Le Rocher : 8 marches
Vidéo: NAPOLÉON - CHANSONS ET MARCHES MILITAIRES 2024, Juillet
Anonim
Le Rocher
Le Rocher

Ce robot est contrôlé par un programme visuel de base (via le port série) et peut se déplacer à trois vitesses différentes grâce à un signal modulé en largeur d'impulsion (PWM) généré par un microcontrôleur PIC (16F877). Le robot peut fonctionner selon deux modes, les modes « contrôle normal » et « suiveur de lumière ». En mode de contrôle normal, le robot peut transporter des objets de 3 à 18 cm d'un endroit à un autre dans un rayon de 150 m. alors qu'en mode traqueur de lumière, il suit la lumière dans une pièce sombre. De nombreux capteurs ont été utilisés, tels que des capteurs de lumière; capteur d'inclinaison, détection de courant de décrochage, détection de niveau de batterie et certains interrupteurs de fin de course et capteurs tactiles utilisés dans la main. Il peut garder sa vitesse constante lorsqu'il monte sur une colline (incliné) et allume automatiquement la lumière lorsqu'il devient sombre. De plus, pour assurer la sécurité du circuit intégré, il déconnecte le courant lorsqu'il est bloqué et la main s'arrête lorsqu'elle tient quelque chose. 4 moteurs à courant continu ont été utilisés, contrôlés par un microcontrôleur PIC 16F877 et 3 circuits de commande de moteur. Cela a pris environ 4 mois et coûte environ 600 $

Étape 1: Concevoir le projet

Concevoir le projet
Concevoir le projet
Concevoir le projet
Concevoir le projet

au stade initial, une conception du projet a été fournie. principalement, la définition du schéma bloc; voir la figure.

Un schéma de circuit plus détaillé est nécessaire à ce stade, cependant, pour faciliter cela, les principaux modules identifiés étaient: 1. Microcontrôleur 2. Capteurs 3. Moteurs 4. Circuit sans fil 5. Programme PC. Une conception 3D a également été réalisée, voir la figure.

Étape 2: Choisissez les appareils et les composants

A ce stade, le concepteur doit choisir les appareils et composants nécessaires à la construction du robot.

Cela comprend: le circuit sans fil (MAX232, LM331, modules émetteur et récepteur FM), les moteurs (4 moteurs à courant continu), le circuit de commande des moteurs (pont en H), le microcontrôleur PIC (16F877), la batterie, les régulateurs de tension (MC7805), les micro-interrupteurs, Photorésistances, Capteur d'inclinaison … etc. Il est important de comprendre la calculabilité de ces dispositifs et comment ils fonctionnent ensemble.

Étape 3: Le microcontrôleur

Le microcontrôleur
Le microcontrôleur

Cette étape est l'étape la plus importante. au début, les codes qui seront reçus et transmis du PIC doivent être identifiés.

Commencez à connecter les composants aux broches appropriées du PIC et programmez le microcontrôleur. Cela peut nécessiter de construire de petits circuits en utilisant les régulateurs, résistances, capteurs…etc.

Étape 4: écrivez le programme PC

Écrire le programme PC
Écrire le programme PC
Écrire le programme PC
Écrire le programme PC

Le programme a été écrit sur Visual Basic.

La communication a été établie via le RS-232. Utilisation de MSComm pour envoyer les données au microcontrôleur en configurant les paramètres (numéro de port, débit en bauds, nombre de parité des bits de données, bits d'arrêt). J'ai utilisé des données 8 bits avec un bit d'arrêt et une parité à un débit en bauds de 9600 bps.

Étape 5: Construire le corps

Construire le corps
Construire le corps
Construire le corps
Construire le corps

Une bonne conception du corps est importante. Pour choisir également la disposition des roues, voir la figure.

e robot a été construit après s'être assuré que les programmes fonctionnent correctement. Cette étape peut également être effectuée avant la programmation.

Étape 6: Construisez le circuit sans fil

Construisez le circuit sans fil
Construisez le circuit sans fil

La construction du circuit sans fil peut être indépendante. Au stade initial, j'ai utilisé un fil pour connecter le PC au robot, et après avoir finalisé le robot, le circuit sans fil a été intégré.

Étape 7: Intégrer

Intégrer
Intégrer

C'est à ce moment que nous avons intégré nos composants, et testé le robot.

Étape 8: Code de programme du microcontrôleur

;***************Liste finale p=16f877 inclut les décidlocs de base "V"<<8 | "1"; Version No.config _CP_OFF&_PWRTE_OFF&_WDT_OFF&_XT_OSC;********** variable principale *************************** cblock 0x20;début de banque 0 zone RAM INPUT_VAR L1 L2 X SPEED11 SPEED12 SPEED21 SPEED22 MSTOP LDET LR1 LR2 endc;********** démarrage du programme principal *************** start BSF STATUT, RP0 BCF STATUT, 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 0XF0;PORT MWF IS I TRISD MOVLW 0X07;PORT E IS I MOVWF TRISE BANKSEL OPTION_REG BCF OPTION_REG, T0CS ÉTAT BCF, RP1 ÉTAT BCF, RP0;****************************** ********************;************************************ ************ ATTENDRE BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 APPEL PWM1OFF APPEL 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, 0 4 BCF PORTB, 3 APPEL PWM1OFF APPEL PWM2OFF APPEL DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7RXDATA;BANKSEL RCSTA;BTFSC RCSTA, OERR;GOTO ARRÊTE APPEL PWM1OFF APPEL PWM2OFF APPEL DARKLIGHT BTFSC LDET, 0 BSF PORTB, RCIF BANKSEL PREGIR1 MOVIF, RCIF PREGIR1 MOVIF 0;************************************************;**** *************************************** MOVWF INPUT_VAR MOVLW 0X00 MOVWF RCREG BCF STATUT, RP0 BCF STATUS, RP1 MOVF INPUT_VAR, 0;STOP SUBLW 0X53 BTFSC STATUS, Z GOTO ARRÊTE MOVF INPUT_VAR, 0;LIGHT ON SUBLW 0X4E BTFSC STATUS, Z GOTO LON MOVF INPUT_VAR, 0 LIGHT OFF SUBLW 0X51 BTFSC LNPVAR_VAR, Z GOTO LON MOVF INPUT_VAR, 0;LIGHT OFF SUBLW 0X51 BTFSC LNPVAR_VAR, Z GOTO LON MOVF INPUT_VAR, 0;MOVE FORWARD SLOW SUBLW 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 GAUCHE SLOW SUBLW 0 X6C STATUT BTFSC, Z GOTO LSLOW MOVF INPUT_VAR, 0;MOVE BACKWARD SLOW SUBLW 0X62 BTFSC STATUT, Z GOTO BSLOW MOVF INPUT_VAR, 0;MOVE FORWARD MEDIUM SUBLW 0X46 BTFSC STATUT, Z GOTO FMED MOVF 0; ÉTAT, Z GOTO RMED MOVF INPUT_VAR, 0; DÉPLACER À GAUCHE SUBLW MOYEN 0X4C ÉTAT BTFSC, Z GOTO LMED MOVF INPUT_VAR, 0; DÉPLACER VERS L'ARRIÈRE MOYEN SUBLW 0X42 BTFSC STATUS, Z GOTO BMED MOVF STATUT 0, BXMOVE SUBTFLWARD, 0; Z GOTO FFAST MOVF INPUT_VAR, 0; DÉPLACEMENT VERS LA DROITE RAPIDE SUBLW 0X57 BTFSC STATUS, Z GOTO RFAST MOVF INPUT_VAR, 0; DÉPLACEMENT À GAUCHE RAPIDE SUBLW 0X56 BTFSC STATUS, Z GOTO LFAST MOVF INPUT_VAR, 0; DÉPLACEMENT VERS L'ARRIÈRE RAPIDE 0X56 BTFSC BFAST MOVF INPUT_VAR, 0;MAIN FERMEE SUBLW 0X43 BTFSC STATUS, Z GOTO HCLOSE MOVF INPUT_VAR, 0;MAIN OUVERTE SUBLW 0X4F BTFSC STATUS, Z GOTO HOPEN MOVF INPUT_VAR, 0;HAND UP SUBLW 0X75 BTFSC INPOV STATUS, ZGOVARTO INPOV STAT;HAND DOWN SUBLW 0X64 BTFSC STATUS, Z GOTO HDOWN MOVF INPUT_VAR, 0;LIGHT FOLOWE R SUBLW 0X54 BTFSC STATUT, 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 MSTOP, 1;BGOTO STOPS CALL CTFSC DARK 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 PORTD, 0 BCF1 PORTDB, 1 BCF1 PORTDB, 1 BSFIRP PORTD, 1 BSFIRP, 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 SPEED 0XFF MOVLWF W SPEED11 MOVLWF SPEED11 0XCF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 APPEL PWM1ON APPEL 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 APPEL PWM1ON APPEL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 RERXP35 BIFNKSC GOSEL PIR35; **************************** BSLOW BCF STATUT, RP0 BCF STATUT, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM1ON APPELER PWMD2ON, BD 1 BSFALL CALL PWMD2ON 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 MOVLW À VITESSE NORMALE 0XEDX11FF MOVWFL12 MOVWFL 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 ARRÊTE BANKSEL PIR1 BTFOPTO GO PIR1, BTFSS 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 PORTBSTOP, 1 REPLAY BSF PORTBDESTOP, 1 CALL BSFTO CALL PWM2ON BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALMED GOTO REP7 GOTO CLROE;************************************ ************ STATUT BCF RMED, STATUT BCF RP0, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE L'APPEL DARKLIGHT BTFSC LDET, 0;BSF PORT B, 7 MOVLW 0XFF VITESSE MOVWF11 MOVLW 0X99 VITESSE MOVWF12 MOVLW 0XFF VITESSE MOVWF21 MOVLW 0X66 VITESSE MOVWF22 APPEL PWM1ON APPEL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB SELB, 1 BSF 0 BSF CALL CALL ST1, 2 REP. BTFSC PIR1, RCIF GOTO RXDATA GOTO REP8 GOTO CLROE;****************************************** **** LMED BCF STATUT, 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 0X11FF MOVLWF SPEED 0 VITESSE12 MOVLW 0XFF MOVWF VITESSE21 MOVLW 0X99 MOVWF VITESSE22 APPEL PWM1ON APPEL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP9;CALL STALL1;BTFSC MSTOP, 0;GOTO STOPS1, BANK GOSCTO PIRD REP9 GOTO CLROE;************************************************ STATUT BCF BMED, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X7F MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 APPEL PWM1ON APPEL PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP10 CALL STALL1 BTFSC STOP1 BTFSC MSTOP1 GOIF, GOIF REP10 GOTO CLROE;************************************************ STATUT BCF FFAST, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE D'APPEL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XEF MOVFLWF 0XEFM 0XEFLWF 0XEF MOVFLWF 0XEFM MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 APPEL PWM1ON APPEL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY NORMALFAST MOVLW 0XCF MOVWF SPEED11 MOVLW SPE 0XCC MOVLWWWFED12 MOVCCON SPEED2 MOVCFWALL CPE 0XCC MOVLWF 0X7 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 APPEL PWM1ON APPEL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTBSC, 1 BSF PORTB1 BSF STOP CALL 0, 2 REPNK1 P., RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALFAST GOTO REP12 GOTO CLROE;****************************************** ******** STATUT BCF RFAST, STATUT BCF RP0, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE L'APPEL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XFF MOVWF VITESSE11 MOVLW 0X99 MOVWF VITESSE12 MOVLW 0XFF MOVWF VITESSE21 MOVLW 0X66 MOVWF VITESSE22 APPEL PWM1ON APPEL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 REP13 CALL STALL1 BTFSC MSTOP1 BTFSC MSTOP, RCIF GOTO REP13 GOTO CLROE;************************************************LFAST BCF STATUT, RP0 BCF STATUT, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE 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 PORTD, 1 BSF PORTD SPEB, 1 MOVWL2 CALL SWWFX PORTD, MOVWL4 MOV12 PORTD, MOVWL4 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 BTFSC PIR1, RC GOPIF; ****************************************** STATUT BCF BFAST, ETAT BCF RP0, 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 MOVWF SPEEDDF12 CALLWFLWW1 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 SPEED22 CALL PWM1ON BSFALL 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 STATUT BCF, RP0 ETAT 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 STOPS BTFSC PORTD, 6 GOTO STOPS BSF PORTD, 2 BCF PORTD, 3 REP16 BTFSC PORTD, 5 GOTO STOPS, 6 BTFSC PORTD GOTO ARRÊTE CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO ARRÊTE BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP16 GOTO CLROE;****************************** ****************** ÉTAT HOPEN BCF, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO ARRÊTE L'APPEL 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 PIR1, RCIF GOTO RE17DATA GO GOTO CLROE;****************************************** STATUT HUP BCF, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE L'APPEL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTC, 4 GOTO18 ARRÊTE BCF PORTC, 0 RESFP BTFSC PORTC, 4 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP18 GOTO CLROE;******************************* ************ STATUT BCF HDOWN, STATUT BCF RP0, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ARRÊTE L'APPEL 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;***** ************************************** SUIVRE STATUT BCF, STATUT BCF RP0, PORTB RP1 BCF, 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_REG_REG, 3;BSF OPTION_REG, 3;CLRFWDT ETAT BCF, RP0 ETAT BCF, RP1;BANKSEL INTCON;BCF INTCON, T0IE;BCF INTCON, T0IF;BANKSEL PIE1;BCF PIE1, 6;BCF PIE1, 0;BANKSEL INTCON;BCF INTCON, GIE BANKSEL PCON BCF, 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 CALL, Z GOTO FR 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 MSTOPED, 11 MGOWFLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 APPEL PWM1ON APPEL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 LR1GREP;CALL STALL1;BTFSC MSTOP, 0;GOTO 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, C GOGRE REPLF LR2G ÉTAT BCF, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO STOPS MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW MOVLW 0X22 MOVWF VITESSE 0XFF MOVWF PWM0 PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 LR2GREP;CALL STALL1;BTFSC MSTOP, 0;GOTO ARRÊTE BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS 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;CALL BUTTLEVEL;BTFSCW MOVSTOP 0STOPXFF;MTFSCW MOVSTOP, SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 APPEL PWM1ON APPEL 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 LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FROREP GOTO REPLF GOTO CLROE;****************************** ****************ARRÊTE BTFSS MSTOP, 4 GOTO STOPA MOVLW 0XCF MOVWF SPEED11 MOVLW 0XB3 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 APPEL PWM1ON APPEL PWM2ON BCF PORTD, 0 BCF PORTD, 1 APPEL SDELAY STOPA ETAT BCF, RP0 ETAT BCF, RP1 PORT BCF, 1 PORT BCF, 2 PORTB BCF, 6 BTFSS LDET, 0; PORT BCF, 7 PORTC BCF, 0 PORT BCF, 3 APPEL PWM1OFF APPEL PWM2OFF BCF PORTD, 0 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 ÉTAT BCF, RP0 ÉTAT 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 BCF STATUT, RP0 BRPCF RETOUR, BTFNST ÉTAT, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BSF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF ÉTAT, RP0 ÉTAT BCF, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0X40 BCFSS ÉTAT, ÉTAT, RP0 ÉTAT BCF, RP1 ÉTAT BCF NIVEAU RETOUR, RP0 ÉTAT BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 BCF ÉTAT, RP0 BCF 0 ÉTAT CALL ADW, MOVF 0HRPX7 ÉTAT BTFSS, C GOTO BL1 GOTO BL2 BL1 BSF MSTOP, 1 BSF PORTB, 6 BL2 RETOUR DARKLIGHT BCF STATUT, RP0 BCF STATUT, 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 RETFNKDL RETURNCON0VERT MOVSEL ADRESH1 BANKWFCON0X49 BANKLW 0XEE BCF ADCON0, 7 BSF ADCON0, 6 BSF ADCON0, 0 BSF ADCON0, GO WAITADC BTFSC ADCON0, GOTO WAITADC STATUT BCF, RP1 STATUT BCF, RP0 RETURNPWM1ON BANKSEL PR2 MOVLW 0XFF MOVWF PR2 STATUT BCF11, RP0 BCF STATUS, RP0 BCF MOVWF CCP1CON MOVF SPEED12, 0 MOVWF CCPR1L ÉTAT BSF, RP0 ÉTAT BCF, RP1 MOVLW 0XF0 MOVWF TRISC ÉTAT BCF, RP0 ÉTAT BCF, RP1 BCF T2CON, T2CKPS1 BCF T2CON, BCF T2CON, T2CKPS0 TCP2 TCON2CON2 PR2 MOVLW 0XFF MOVWF PR2 ÉTAT BCF, RP0 ÉTAT BCF, RP1 VITESSE MOVF21, 0 MOVWF CCP2CON VITESSE MOVF22, 0 MOVWF CCPR2L ÉTAT BSF, RP0 ÉTAT BCF, RP1 MOVLW 0XSTATF0 ÉTAT MOVWF1 TISCRPFC2 BCFPS, BCFPS RP0 T2CON, T2CKPS0 BSF T2CON, TMR2ON BSF CCP2CON, 2 BSF CCP2CON, 3 RETOURNPW 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 MOVUSRPCF2 PR2 BTURUSCFRPCFCON2, 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, BCF STATUS, RP1 BCF REMISE EN PLACE ADTURUS, CONF0, BCF0 5 ÉTAT BCF, RP0 ÉTAT BCF, RP1 CALL CONVERT ADRESH MOVF, W ANDLW 0XF0 MOVWF LR1 ÉTAT BCF, RP0 ÉTAT BCF, RP1 RETOUR LFC2 BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCONCF0, 4 BSF STATUT0, 5 BCF 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 CALL ADRESH CON, RPOV1 0X4C ÉTAT BTFSC, C GOTO COMP4 BSF MSTOP, 3 ÉTAT BCF COMP4, RP0 ÉTAT BCF, RP1 RETOUR SDELAY CLRF L2 XL3 CLRF L1 XL2 CLRF TMR0 XL1 MOVLW 0XFF SUBWF TMR0, W ÉTAT BTFSS, C GOTO XL1 MOVLW 0X20 INCF L1 SUBWF L1, W ÉTAT BTFSS, C GOTO XL2 MOVLW 0X10 INCF L2 SUBSS STAT L2, W BTF XL3 RETOUR NOP NOPEND

Deuxième prix du concours de robots Instructables et RoboGames

Conseillé: