Rechercher : dans
Par :

Convertir un code Asm en C

Dernière réponse le 17 fév 2008 à 18:28:19 Angel Seiko Inoto, le 17 fév 2008 à 17:54:09 
 Signaler ce message aux modérateurs

Bonjour tout le monde, j'aurais besoin de l'aide de personnes connaissant le langage assembleur svp.
Ce serait pour convertir un programme en C. Je ne connais pas vraiment l'asm, je l'ai deja etudié mais très brièvement et il y'a de cela plusieurs mois donc bon :s

Je vous poste le programme :

#include <16f877.h>
#fuses HS,NOPROTECT,NOWDT,BROWNOUT,PUT,NOLVP
#ORG 0x1F00,0x1FFF {} /* Reserve memory for bootloader for the 8k 16F876/7 */
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#use i2c (master, sda=PIN_C4, scl=PIN_C3)

main()
{
i2c_start(); //initate start condition
i2c_write(0xE0); //device address
i2c_write(0x00); //register address
i2c_write(0xA0); //1rst seq to change adress
i2c_start(); //initate start condition
i2c_write(0xE0); //device address
i2c_write(0x00); //register address
i2c_write(0xAA); //2nd seq to change adress
i2c_start(); //initate start condition
i2c_write(0xE0); //device address
i2c_write(0x00); //register address
i2c_write(0xA5); //3rd seq to change adress
i2c_start(); //initate start condition
i2c_write(0xE0); //device address
i2c_write(0x00); //register address
i2c_write(0xF0); //write new adress
i2c_stop();
}

Affichage des 2 distances en cm sur le PC :

#include <16f877.h>
#fuses HS,NOPROTECT,NOWDT,BROWNOUT,PUT,NOLVP
#ORG 0x1F00,0x1FFF {} /* Reserve memory for bootloader for the 8k 16F876/7 */
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use i2c (master, sda=PIN_C4, scl=PIN_C3)

main()
{
// int i;
int rangeE;
int rangeF;
while(1)
{
i2c_start(); //initate start condition
i2c_write(0xF0); //device address
i2c_write(0x00); //register address
i2c_write(0x51); //set units to centimeters
i2c_stop();
delay_ms(105); //wait for returning ping

i2c_start(); //initiate a new start condition
i2c_write(0xF0); //device address
i2c_write(0x02); //address of high byte register
i2c_start();
i2c_write(0xF1); //device address but read

rangeF = i2c_read(1); //read first byte and shift left
rangeF = rangeF << 8;
rangeF += i2c_read(1); //read second byte and add to 1st
rangeF += i2c_read(0);
i2c_stop();

// printf("range F0 in centimeters = %3unr", rangeF);
delay_ms(1000);

i2c_start(); //initate start condition
i2c_write(0xE0); //device address
i2c_write(0x00); //register address
i2c_write(0x51); //set units to centimeters
i2c_stop();
delay_ms(105); //wait for returning ping

i2c_start(); //initiate a new start condition
i2c_write(0xE0); //device address
i2c_write(0x02); //address of high byte register
i2c_start();
i2c_write(0xE1); //device address but read

rangeE = i2c_read(1); //read first byte and shift left
rangeE = rangeE << 8;
rangeE += i2c_read(1); //read second byte and add to 1st
rangeE += i2c_read(0);
i2c_stop();

printf("range E0 in centimeters = %3unr", rangeE);
printf("range F0 in centimeters = %3unr", rangeF);
printf(" nr");
delay_ms(1000);
}
}



Voila, pour ceux qui l'auraient compris, il s'agit d'un programme utilisant 2 capteurs ultrasons.
J'espere que ce programme n'est pas trop long et difficile, j'ai besoin d'utiliser justement les capteurs dans un projet que je realise

Merci d'avance =)

Angel.

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Convertir un code Asm en C » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Utilisation de Free Video Converter VoirLa dernière version est téléchargeable : Sur le site officiel : KoyoteSoft Sur CCM : Free Video Converter Free Video Converter 1- Installation 2- Découverte et prise en main 3- Conversion 1- Installation Sur le site de Koyote,...
Télécharger Code::Blocks Studio VoirCode::Blocks est un IDE multi-plateforme (Linux, Mac et Windows) entièrement codé en C++. Code::Blocks est basé sur un système de plugins, ce qui permet de le faire évoluer très facilement sans devoir le recompiler. La compilation, qui peut se...
Introduction au langage C VoirPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie...

1

 Mahmah, le 17 fév 2008 à 18:28:19

Bonjour bonjour,

Je suis... confus... le but est de convertir un programme depuis un assembleur vers du C et... tu donnes un programme écrit en C d'un bout à l'autre. (à part quelques options spécifiques à un compilateur visiblement)

Pourrais-tu reformuler la question s'il te plait ?

M.

Répondre à Mahmah
Collection CommentÇaMarche.net