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
|