Sommaire

Cahier des charges Stratégie Équipe Conception Fabrication Programmation Mise au point Les épreuves Déplacement Les mobiles Les ponts

 

Programmation

Le microprocesseur ATMEL a été choisi pour sa programmation en langage C, bien plus convivial que les autres langages "machine".

/*********************************************
This program was produced by the
CodeWizardAVR V1.23.8d Evaluation
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro

Project : 
Version : 
Date : 19/01/2006
Author : Freeware, for non-commercial use only
Company : 
Comments: 


Chip type : ATmega8
Program type : Application
Clock frequency : 8,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/

#include <mega8.h>
void main(void)
// Seuls les ports C et D sont utilisés.
// Le port C est utilisé pour les entrées (2 entrées utilisées)
// >Le port B est utilisé pour les sorties (2 sorties utilisées)
{
PORTB=0x00;
DDRB=0x0E; // Le port est codé en Hexadécimal, il y a deux sorties pour les moteurs
PORTC=0x00; // Le port est codé en Hexadécimal, il n'est constitué que d'entrées, 
// deux seront utilisées pour les capteurs
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
// Le Programme de déplacement est très simple. Trois situations sont possibles 
//donc trois tests sont sucessivement effectués afin de continuellement vérifier la 
//trajectoire du mobile. 
while (1)
{

if (PINC.1&&PINC.2)     // Les deux capteurs sont en dehors de la ligne
PORTB=0x06;             // Mise à UN des 2 sorties moteur
if (PINC.1&&!PINC.2)    // Capteur 1 en dehors, capteur 2 sur la ligne
PORTB=0x02;             // Mise à UN du moteur 1, Mise à Zéro du moteur 2 
if (!PINC.1&&PINC.2)    // Capteur 1 sur la ligne, capteur 2 en dehors
PORTB=0x04;             // Mise à ZERO du moteur 1, Mise à UN du moteur 2 
}
}
// Le Programme n'est qu'une boucle continuellement parcourue.
// Le cas où les deux capteurs seraient sur la piste est improbable.
// Les deux entrées seraient à 0 et le test correspondant n'étant pas réalisé,
// le programme continuerait l'action en cours sans en tenir compte.

Haut de la page