Projet

Général

Profil

« Précédent | Suivant » 

Révision 902

Ajouté par jcguifodjo il y a environ 4 ans

Ecriture des fonctions rectrame et hex2int. Ajout de commentaires des séances a2 et a3

Voir les différences:

branch/GUIFO/sp4a12/main.c
//Calcul de la distance ? la zone dangereuse la plus proche
int distance_a_la_proche_zone(Position p, Zone r[],int nb_zones, float *d){
int i;
int i,indx=0;
float dist;
if(nb_zones!=0){
(*d)=calcul_distance(p,r[0].rpos);
(*d)=calcul_distance(p,r[indx].rpos);//On suppose que la toute premi?re zone du tableau est celle dont la distance est la plus proche
for(i=1;i<nb_zones;i++){
dist=calcul_distance(p,r[i].rpos);
dist=calcul_distance(p,r[i].rpos);//On calcul la distance de notre position aux autres zones
if(dist<(*d)){
if(dist<(*d)){//On compare cette distance calcul?e ? la toute premi?re distance et si elle est inf?rieure elle devient notre nouvelle zone ? distance la plus proche
(*d)=dist;
indx=i;
}
}
}
return i;
return indx;
}
//Fonction ? modifier !!!!!
branch/GUIFO/sp4c12/TPC/TPC/TPC.c
/***********************************************************************/
#include "sfr32c87.h"
//Initialisation du port s?rie
void uart0_init(void)
{
//Initialisation des ports
......
ps0_3 = 1;
//Configuration du registre u0mr
smd0_u0mr = 1;
smd1_u0mr = 0;
smd2_u0mr = 1;
ckdir_u0mr = 0;
stps_u0mr = 0;
prye_u0mr = 0;
iopol_u0mr = 0;
smd0_u0mr = 1;
smd1_u0mr = 0;
smd2_u0mr = 1;
ckdir_u0mr = 0;
stps_u0mr = 0;
prye_u0mr = 0;
iopol_u0mr = 0;
//configuration du rgistre U0SMR
u0smr = 0x00;
......
//Configuration des registres s0tic et s0ric
s0tic = 0x00;
s0ric = 0x00;
crs_u0c0 = 0;
te_u0c1 = 1;
re_u0c1 = 1;
}
void uart0_tx(char c)
{
crd_u0c0 = 1;
crs_u0c0 = 0;
u0tb = c;
te_u0c1 = 0;
while(ti_u0c1==0);//On attend tant que le registre u0tb n'est pas vide
u0tb = c;//Envoi du caract?re par ?criture dans le registre u0tb
}
char uart0_rx()
{
char c;
crd_u0c0 = 1;
crs_u0c0 = 0;
re_u0c1 = 1;
while(ri_u0c1==1);//On attend tant que le registre u0rb n'est pas disponible ? recevoir un nouveau caract?re
c= u0rb;
return c;
}
......
{
char c='A';
uart0_init();
while (1){
uart0_tx(c);
}
uart0_rx(c);//Reception du caract?re par lecture du registre u0rb
}*/
void main(void)
void Alphabet(void)
{
char alpha;
uart0_init();
te_u0c1 = 1;
for(alpha = 'A' ; alpha <='Z' ; alpha++)
{
while(ti_u0c1==0);
u0tb=alpha;
for(alpha = 'A' ; alpha <='Z' ; alpha++)
{
uart0_tx(alpha);
}
}
/*
int rectrame(char *buffer){
int i=0;
char recu;
recu=uart0_rx();
while(recu!='&');//Tant qu'on ne recoit pas le carat?re de debut de trame on attend
while(recu!='*')//On lit la trame jusqu'au dernier caract?re avant *
{
buffer[i]=recu;
i++;
recu=uart0_rx();
}
return i;
}
*/
/* fonction qui transforme un code hexad?cimal sur deux caract?res en valeur d?cimale
int hex2int(char *c){
int i,base;
for(i=0;i<2;i++){
if(c[i]>='0' && c[i]<='9'){//Si le caract?re est entre 0 et 9 on retranche 48 pour avoir sa valeur correspondante en decimal d'apr?s la table ASCII
c[i]=c[i]-48;
}
else if(c[i]>='A'&& c[i]<='F'){//Si le caract?re est entre A et F on retranche 55 pour avoir sa valeur correspondante en decimal d'apr?s la table ASCII
c[i]=c[i]-55;
}
}
base=c[1]+(16*c[0]);
return base;
}
*/

Formats disponibles : Unified diff