nicodache marmotte en chocolat concept © | Code :
- /*==============================================================================*/
- /*==================== PROGRAMMATION BQ2000 SPI rapide =========================*/
- /*==============================================================================*/
- #include <c:\bq\bq.h>
- #include <stdio.h>
- #include <math.h>
- at 0xA2 sbit HDQ_TX ;
- at 0xA3 sbit HDQ_RX ;
- at 0xA4 sbit TEST ;
- extern void INITIALISATIONS (void);
- extern void Temporisation (char n);
- char Ad1,byte1, byte2, HDQ;
- void HDQ_REPOS(void){
- HDQ_TX=1;
- }
- /*==============================================================================*/
- /*================================ EMISSION ====================================*/
- /*==============================================================================*/
- void HDQ_WRITE_BYTE(char ADRESSE,char OCTET) {
- char compt;
- ADRESSE=ADRESSE|0x80;
- //break
- HDQ_TX=0;
- Temporisation(190);
- //start
- HDQ_TX=1;
- Temporisation(1);
- //EMISSION DE l'adresse+ bit write
- for (compt=0; compt<=7; compt++) {
- HDQ_TX=ADRESSE&0x01; //emmission poid faible
- if (HDQ_TX==1) {
- HDQ_TX=0;
- Temporisation(25); //40us
- HDQ_TX=1;
- Temporisation(185);
- } //200us
- else
- {
- (HDQ_TX=0);
- Temporisation(105); //120us
- HDQ_TX=1;
- Temporisation(105);
- }; //120us
- ADRESSE=(ADRESSE/2); //decalage de 1 a droite
- };
- HDQ_TX=1;
- Temporisation(300);
- //EMISSION DE l'octet
- for (compt=0; compt<=7; compt++) {
- HDQ=OCTET&0x01; //emmission poid fort
- if (HDQ==1) {
- HDQ_TX=0;
- Temporisation(25);
- HDQ_TX=1;
- Temporisation(185);
- } else {
- (HDQ_TX=0);
- Temporisation(105);
- HDQ_TX=1;
- Temporisation(105);
- };
- OCTET=(OCTET/2); //decalage de 1 a droite et masque
- };
- }
- /*==============================================================================*/
- /*================================= RECEPTION ==================================*/
- /*==============================================================================*/
- char HDQ_WRITE_READ(char ADRESSE) {
- char compt, octet_recu;
- ADRESSE=ADRESSE & 0x7F;
- // Temporisation(1);
- //EMISSION DE l'adresse+ bit read
- for (compt=0; compt<=7; compt++) {
- HDQ=ADRESSE&0x01;
- //emmission poid faible
- if (HDQ==1) {
- HDQ_TX=0;
- Temporisation(25); //40us
- HDQ_TX=1;
- Temporisation(185);
- } //200us
- else
- {
- (HDQ_TX=0);
- Temporisation(105); //120us
- HDQ_TX=1;
- Temporisation(105);
- }; //120us
- ADRESSE=(ADRESSE/2); //decalage de 1 a droite
- };
- HDQ_TX=1; Temporisation(300);
- //reception l'octet
- for (compt=0; compt<=7; compt++) {
- // C'EST QUOI CE FOR VIDE ICI ?!
- };
- return octet_recu;
- }
- /*==============================================================================*/
- /*=================== acquisition de la valeur de l adresse ====================*/
- /*==============================================================================*/
- long LIRE_ADRESSE(void) {
- long d;
- scanf ("%ld",&d);
- return d;
- }
- /*==============================================================================*/
- /*==================== acquisition de la valeur de l octet =====================*/
- /*==============================================================================*/
- long LIRE_VALEUR(void) {
- long val;
- scanf ("%ld",&val);
- return val;
- }
- /*==============================================================================*/
- /*============================= PROGRAMME PRINCIPAL ============================*/
- /*==============================================================================*/
- void main (void) {
- HDQ_REPOS();
- INITIALISATIONS ();
- while(1) {
- printf("entrez la valeur en decimal de l'adresse ou ecrire, puis touche ENTER \n " );
- TEST=0;
- Ad1 = LIRE_ADRESSE(); printf("\n" ); printf("\n" );
- TEST=1;
- printf("entrez la valeur en decimal de la valeur a envoyer, puis touche ENTER \n " );
- byte1 = LIRE_VALEUR(); printf("\n" ); printf("\n" );
- HDQ_WRITE_BYTE(Ad1, byte1);
- // printf("entrez la valeur en decimal de l'adresse a lire, puis touche ENTER \n " );
- // byte2 = LIRE_VALEUR(); printf("\n" ); printf("\n" );
- // byte2= HDQ_WRITE_READ(Ad1);
- };
- }
|
juste pour rendre ca moins illisible...
(je sais, je suis trop gentil)
et quelques remarques :
- un while(1) te vaut la pendaison
- tu as des noms de variable qui font très visual basic... pour rappel, tout en minuscule en C, sauf les constantes. et pour les fonctions, c'est
Code :
- type_de_retour nom_de_la_fonction(type param1, type param2)
|
- t'as appris à indenter ton code ou ca ? (je cause surtout des
Code :
- type_de_retour tagada(int plop)
- { long truc;
- truc = plop;
- return truc; }
|
- Pas besoin de mettre des ; derrière les accolades des fonctions ou des structures conditionelles
- compile ton code avec l'option -Wall de gcc, ca te fera sortir un code propre
- t'aime visiblement pas les pointeur ni les int; c'est pourtant une des grandes force du C...
Message édité par nicodache le 11-04-2005 à 18:09:54 ---------------
modérateur inside plankaivoo - ici powered - Je roule en micra 1l 55cv et je t'emmerde 
|