Explication urgente
soulka
-
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis actuellement en terminal sti electronique et demain j'ai mon oral de bac, j'ai un gros problème concernant un programme que je viens de récuperer sans explication.. Il y a 3 points sur la compréhension de celui ci et 3 points coeff 9 peut faire des dégats.. Donc si une âme charitable aurait la grande amabilité de m'expliquer en détails ce programme.. C'est à propos d'un portail.
#include <avr/io.h> // déclaration des caracteristiques de l'ATMEGA8535
#include <util/delay.h> // fonctions de temporisation
#include <avr/interrupt.h>
#include <stdlib.h>
#include "lcd_2011.c"
//déclaration des variables:
unsigned int TCNT,OCR,ICR,TOP,point,duree_creneau;
char *duree_str="00000";
unsigned char *message0="Appuyer sur BP";
unsigned char *message1="pour detection";
unsigned char *message2="Vehicule present";
unsigned char *message3="Pas de vehicule";
unsigned char *message4=" ICR=";
//sous-prog
void mesure_duree()
{
ICR=TCNT;
lcd_gotoxy(0,0);
lcd_puts(message4);
dtostrf(ICR,5,0,duree_str);
lcd_puts(duree_str);
}
void test_detection_vehicule()
{
if (ICR<40)
{
sbi(PORTA,0);//del eteinte
lcd_gotoxy(0,1);
lcd_puts(message3);
}
else
{
cbi(PORTA,0);//del eclaire
lcd_gotoxy(0,1);
lcd_puts(message2);
}
}
// Programme principal
int main (void)
{
//initialisation des ports;
DDRD=0b00111010;
sbi(PORTD,5);
PORTA=0x04;
DDRA=0b01111011;
DDRB=0x00;
DDRC =0xFF;
// intialisation LCD:
lcd_init(); // initialisation du panneau LCD
lcd_clear(); // Effacer l'écran
//initialisation des variables
OCR=0x0016;//creneau bas de 100µs
TOP=0x03FF;// duree de la periode
TCNT=0x0000;
ICR=0x0000;
PORTA|=_BV(0);//led n'eclaire pas
lcd_clear(); // on efface l'écran
lcd_gotoxy(0,0); // positionnement du curseur ligne 1 colonne 0
lcd_puts(message0);
lcd_gotoxy(0,1); // positionnement du curseur ligne 2 colonne 0
lcd_puts(message1);
while((PINA&0x04)==0x04);
do
{
TCNT=0x0000;
point=1;
do
{
if (TCNT<OCR) cbi(PORTD,5);
else sbi(PORTD,5);
if ((TCNT>OCR)&& (point==1) && ((PIND&0b01000000)==0x00))
{
mesure_duree();
test_detection_vehicule();
point=0;
}
TCNT++;
}
while(TCNT<TOP);
}
while(1);
return 0;
}
Si vous avez besoin de plus d'info concernant l'utilisation n'hésitez pas, merci d'avance.
Je suis actuellement en terminal sti electronique et demain j'ai mon oral de bac, j'ai un gros problème concernant un programme que je viens de récuperer sans explication.. Il y a 3 points sur la compréhension de celui ci et 3 points coeff 9 peut faire des dégats.. Donc si une âme charitable aurait la grande amabilité de m'expliquer en détails ce programme.. C'est à propos d'un portail.
#include <avr/io.h> // déclaration des caracteristiques de l'ATMEGA8535
#include <util/delay.h> // fonctions de temporisation
#include <avr/interrupt.h>
#include <stdlib.h>
#include "lcd_2011.c"
//déclaration des variables:
unsigned int TCNT,OCR,ICR,TOP,point,duree_creneau;
char *duree_str="00000";
unsigned char *message0="Appuyer sur BP";
unsigned char *message1="pour detection";
unsigned char *message2="Vehicule present";
unsigned char *message3="Pas de vehicule";
unsigned char *message4=" ICR=";
//sous-prog
void mesure_duree()
{
ICR=TCNT;
lcd_gotoxy(0,0);
lcd_puts(message4);
dtostrf(ICR,5,0,duree_str);
lcd_puts(duree_str);
}
void test_detection_vehicule()
{
if (ICR<40)
{
sbi(PORTA,0);//del eteinte
lcd_gotoxy(0,1);
lcd_puts(message3);
}
else
{
cbi(PORTA,0);//del eclaire
lcd_gotoxy(0,1);
lcd_puts(message2);
}
}
// Programme principal
int main (void)
{
//initialisation des ports;
DDRD=0b00111010;
sbi(PORTD,5);
PORTA=0x04;
DDRA=0b01111011;
DDRB=0x00;
DDRC =0xFF;
// intialisation LCD:
lcd_init(); // initialisation du panneau LCD
lcd_clear(); // Effacer l'écran
//initialisation des variables
OCR=0x0016;//creneau bas de 100µs
TOP=0x03FF;// duree de la periode
TCNT=0x0000;
ICR=0x0000;
PORTA|=_BV(0);//led n'eclaire pas
lcd_clear(); // on efface l'écran
lcd_gotoxy(0,0); // positionnement du curseur ligne 1 colonne 0
lcd_puts(message0);
lcd_gotoxy(0,1); // positionnement du curseur ligne 2 colonne 0
lcd_puts(message1);
while((PINA&0x04)==0x04);
do
{
TCNT=0x0000;
point=1;
do
{
if (TCNT<OCR) cbi(PORTD,5);
else sbi(PORTD,5);
if ((TCNT>OCR)&& (point==1) && ((PIND&0b01000000)==0x00))
{
mesure_duree();
test_detection_vehicule();
point=0;
}
TCNT++;
}
while(TCNT<TOP);
}
while(1);
return 0;
}
Si vous avez besoin de plus d'info concernant l'utilisation n'hésitez pas, merci d'avance.
A voir également:
- Explication urgente
- Paris multiple 2/6 explication - Forum Excel
- Chambre 1408 explication fin ✓ - Forum Mozilla Firefox
- Black butler saison 2 explication ✓ - Forum Cinéma / Télé
- Foyer netflix explication - Accueil - Guide streaming
- Paris Sportifs Combinés - Forum Loisirs / Divertissements