1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
| /* Bibliothèque utilisée */
#include <avr/io.h>
#include <avr/interrupt.h>
/* Définition des variables d'entrées */
#define Aucun_Capteur (0x00)
#define Capteur_Fin_Course_Contact_1 (0x01)
#define Capteur_Fin_Course_Conact_6 (0x02)
#define Capteur_Ir_2 (0x04)
#define Capteur_Ir_3 (0x08)
#define Capteur_Ir_4 (0x10)
#define Capteur_Ir_5 (0x20)
#define BAUD 9600 // vitesse du port série --> 9600bit/s
#define UCR (0x18)//reglage port série
#define UBRR 25//idem
/* Définitions des variables de sorties */
#define Aucun_Moteur (0x00)
#define Marche_Arret_Moteur (0x01)
#define Sens_Rotation_Moteur (0x02)
#define Marche_Et_Sens (0x04)
/* Fonction d'initialisation des périphériques */
unsigned char COMMANDE_PC; //variable contenant la valeur du port série
void Init_Periph(void)
{
PORTA= 0x00;
DDRA= 0xFF;
PORTB= 0xFF;
DDRC= 0x00;
}
/* ************************************************* */
/* Programme Commande PC */
/* ************************************************* */
char a=2;
void recoit_commande_pc(void)
{
if((USR & 0x80) == 0x80) //Si une donnée vient d'arriver...
{
COMMANDE_PC = UDR; //Sauvegarde donnée reçue
USR = 0x80; //RAZ bit RXC
}
else
{
COMMANDE_PC = 0x00; //Si pas de donnée reçue "00" servira signaler au programme principal que il n'y a rien à faire.
}
}
/* ************************************************* */
/* Programme A */
/* ************************************************* */
void programme_A(void)
{
if((Capteur_Fin_Course_Contact_1 & 0x01)== 0x01)
{
PORTB = Marche_Arret_Moteur; /*mise en marche moteur*/
}
if((Capteur_Ir_2 & 0x04) == 0x04)
{
PORTB = Aucun_Moteur;
}
}
/* ************************************************* */
/* Programme B */
/* ************************************************* */
void programme_B(void)
{
if((Capteur_Fin_Course_Contact_1 & 0x01)== 0x01)
{
PORTB = Marche_Arret_Moteur; /*mise en marche moteur*/
}
if((Capteur_Ir_3 & 0x08) == 0x08)
{
PORTB = Aucun_Moteur;
}
}
/* ************************************************* */
/* Programme C */
/* ************************************************* */
void programme_C(void)
{
if((Capteur_Fin_Course_Contact_1 & 0x01)== 0x01)
{
PORTB = Marche_Arret_Moteur; /*mise en marche moteur*/
}
if((Capteur_Ir_4 & 0x10) == 0x10)
{
PORTB = Aucun_Moteur;
}
}
/* ************************************************* */
/* Programme D */
/* ************************************************* */
void programme_D(void)
{
if((Capteur_Fin_Course_Contact_1 & 0x01)== 0x01)
{
PORTB = Marche_Arret_Moteur; /*mise en marche moteur*/
}
if((Capteur_Ir_5 & 0x20) == 0x20)
{
PORTB = Aucun_Moteur;
}
}
/* ************************************************* */
/* Programme principale */
/* ************************************************* */
int main(void)
{
Init_Periph();
//char a=2;
while(1)
{
recoit_commande_pc();
if(COMMANDE_PC == 0x30)/*mémoire tampon rs232*/
{
programme_A();
}
if(COMMANDE_PC == 0x31) /*mémoire tampon rs232*/
{
programme_B();
}
if(COMMANDE_PC == 0x38)/*mémoire tampon rs232*/
{
programme_C();
}
if(COMMANDE_PC == 0x20)/*mémoire tampon rs232*/
{
programme_D();
}
if(COMMANDE_PC == 0x00)
{
main();
}
} /*fin du while(1) */
} /* fin du main*/ |
Partager