Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Programmation language C



  1. #1
    kartman17

    Programmation language C


    ------

    Bonjour,

    J'ai un petit soucis, je suis novice dans la programmation et j'ai besojn d'aide, est possible de transformer ce fichier :
    Code:
    //***************************************************
    // CCS Compiler
    // irb12 - Premiers pas d'irbot + détection collision
    //
    // Auteur : HEILIG Yves
    //***************************************************
    
    #include <16f84.h>
    #fuses HS,NOWDT,NOPROTECT
    #use delay(clock=20000000)
    
    //******************
    // DEFINE
    //******************
    
    #define	TIME 4			// TIMER=3 --> 256-3=253 pas
    
    #define VAL_18MS 360		// 360*50=18000µs
    #define VAL_AV 40		// 40*50 =2000µs
    #define VAL_AR 20		// 20*50 =1000µs
    #define VAL_AVP 32		// 32*50 =1600µs
    #define VAL_ARP 28		// 28*50 =1400µs
    #define VAL_STOP_D 30		// 30*50 =1500µs
    #define VAL_STOP_G 31
    #define AV 1
    #define TG 2
    #define TD 3
    #define AR 4
    #define ROTG 5
    #define ROTD 6
    #define STOP 0
    #define GA 0
    #define DR 1
    
    #define PORT_SERVO_G PIN_B0	// signal pour servo gauche
    #define PORT_SERVO_D PIN_B1	// signal pour servo droite
    #define LED_IR_G PIN_B2		// led ir gauche
    #define LED_IR_D PIN_B3		// led ir droite
    #define REC_IR PIN_B7		// récepteur ir
    #define LED_G PIN_A2		// led signalisation gauche
    #define LED_D PIN_A1		// led signalisation droite
    #define MICRO_S_G PIN_B4	// switch gauche détection de collision
    #define MICRO_S_D PIN_B5	// switch droite détection de collision
    
    #define SIZE 7			// taille de la table tab_marche
    
    //*******************
    // variables globales
    //*******************
    
    int16 CPT_18MS, CPT_MARCHE, MARCHE;
    int CPT_PULS_G, CPT_PULS_D, PULS_G, PULS_D, DEF_DIR;
    int1 SIGNAL_G=0, SIGNAL_D=0, DUREE_MARCHE=0;
    
    const struct servo
    {
       int gauche;
       int droite;
    } tab_marche[SIZE] = {
    		VAL_STOP_G,VAL_STOP_D, VAL_AV, VAL_AV, VAL_STOP_G, VAL_AV, VAL_AV, VAL_STOP_D,
    //Index 	0		       1	       2        	   3
    //Comment       STOP		   AV		   TG		     TD
    		VAL_AR, VAL_AR, VAL_AR, VAL_AV, VAL_AV, VAL_AR};
    //Index		4		5		6
    //Comment	AR		ROTG		ROTD
    
    
    //****************************************
    // Fonctions
    //****************************************
    
    void init_timer () {
    
    	set_timer0(TIME);
     	setup_counters(RTCC_INTERNAL,WDT_18MS);
    	enable_interrupts(INT_RTCC);		// autorise interruption sur timer0
    	enable_interrupts(INT_RB);		// autorise interruption sur b4 à b7
    	enable_interrupts(GLOBAL);
    }
    
    int1 radar (led) { 		// émission d'un train de 50 impulsions à 38Khz
    				// durée de l'émission 50*26µs=1300µs
    	int i;
    	int c=0;
    
    	for (i=0;i<50;i++) {
    	if (input(REC_IR)==0) c++;
    	switch (led) {
    	case 0 : // LEDG	
    		output_high(LED_IR_G);
    		delay_us(10);
    		output_low(LED_IR_G);
    		break;
    	case 1 : // LEDD
    		output_high(LED_IR_D);
    		delay_us(10);
    		output_low(LED_IR_D);
    		break;
    	}
    	delay_us(10);
    	
    	}
    	if (c>45) return 1;	// on considère qu'il y a eu retour
    	else return 0;
    }
    
    void sens (direction, long duree) { // sens et durée de marche de IRBOT
    
    	if (DUREE_MARCHE) return;
    
    	CPT_MARCHE=0;
    	DUREE_MARCHE=0;		// marche indéfiniment
    
    	if (duree != 0) {
            DUREE_MARCHE=1;		// marche pendant la durée définie par MARCHE
    	MARCHE=duree;	 	// duree en sec. = duree * .023
    	}
    
    	PULS_G=tab_marche[direction].gauche;
    	PULS_D=tab_marche[direction].droite;
    
    }
    
    void ir () {			// radar ir
    	int i;
    
    	output_high (LED_G);	// éteint LEDG
    	output_high (LED_D);	// étient LEDD
    
    //	if (radar(GA) && radar(DR)) {
    //	output_low(LED_G);	// allume LEDG signalisation
    //	output_low(LED_D);	// allume LEDD signalisation
    //	sens(ROT,3);
    //       }
    //	else {
    	if (radar (GA)) {
    	output_low(LED_G);	// allume LEDG signalisation
    	sens (TD,44);		// tourne à droite pendant 1"
    	}
    	if (radar (DR)) {
    	output_low(LED_D);	// allume LEDD signalisation
    	sens (TG,44);		// tourne à gauche pendant 1"
    	}
    //	}
    
    }
    
    void att() {	// attend que la manoeuvre en cours soit terminée
    
    	while (DUREE_MARCHE);
    }
    
    
    
    //*****************************************
    //Interruptions
    //*****************************************
    
    #int_timer0		// Interruption toutes les (4*250)/20000000 = 50µs
    
    void main_int () {		
    	set_timer0(TIME);
    	if (++CPT_18MS == 360) { // à 18MS début signal vers servo
    	CPT_18MS=0;
    	CPT_PULS_G=0;
    	CPT_PULS_D=0;
    	SIGNAL_G=1;
    	SIGNAL_D=1;
    	output_high(PORT_SERVO_G);
    	output_high(PORT_SERVO_D);
     
    	 if (DUREE_MARCHE==1) {	// compte durée de marche de IRBOT
    	  if (CPT_MARCHE++ == MARCHE) {
    	  DUREE_MARCHE=0;
    	  sens (DEF_DIR,0);		// marche en avant indéfiniment
              }
    	 }
    	}
    
    	else {
    	if (SIGNAL_G==1) { // compte durée impulsion servo gauche
    	 if (CPT_PULS_G++ == PULS_G) {
    	  SIGNAL_G=0;
    	  output_low(PORT_SERVO_G);
    	 }
    	}
    
    	if (SIGNAL_D==1) {	// compte durée impulsion servo droit
    	 if (CPT_PULS_D++ == PULS_D) {
    	  SIGNAL_D=0;
    	  output_low(PORT_SERVO_D);
    	 }
    	}
    
    	if (CPT_18MS == 180) ir();; // à 9MS (180*50µs) appel radar ir
    	}
    }
    
    #int_rb			// interruption sur PORTB 4 à 7 (micro-switch de collision) 
    
    void collision () {
    	if (input(MICRO_S_G)==0) {
    	DUREE_MARCHE=0;		// priorité à la détection de collision
     	sens (ROTD,32);		// 1/4 de tour à droite pendant 1.5"
    	}
    	if (input(MICRO_S_D)==0) {
    	DUREE_MARCHE=0;		// priorité à la détection de collision
     	sens (ROTG,32);		// 1/4 de tour à gauche pendant 1.5"
    	}
    }
    
    //**********************
    // Programme principal
    //**********************
    
    main()  {
    
    	init_timer();
    
    	DEF_DIR=STOP;		// la direction par défaut
    				// irbot prend cette direction à la fin de sa manoeuvre
    
    	sens (STOP,652);	// STOP pendant 15" = 652*.023
    	att();
    
    	sens (ROTG,130);		// rotation à gauche pendant 3"
    	att();
    
    	delay_ms(500);
    	sens (ROTD,130);		// etc ...
    	att();
    
    	delay_ms(500);
    	sens (AR,130);
    	att();
    
    	delay_ms(500);
    
    	DEF_DIR=AV;
    	sens (AV,0);
        
    	while (TRUE) { // boucle sans fin
    	output_high (PIN_A3);
    	delay_ms(250);
    	output_low (PIN_A3);
    	delay_ms(500);
    
    	}
    
    }
    en fichier ecrit comme ceci :

    ********************

    Ce code est soumis à un copyright comme tu peux le voir dans l'entête, donc pas diffusable sur notre forum.
    Cordialement.
    Hulk28 pour la modération.


    Pour compiler j'utilise MPASWIN.

    merci d'avance, si c'est possible vous me sauvez.

    Ludovic

    -----
    Dernière modification par HULK28 ; 17/05/2008 à 13h28. Motif: Effacement d'un code copyrighté

  2. Publicité
  3. #2
    invite03481543

    Re : Programmation language C

    Attention j'attire votre attention à tous, en aucun cas un code ou un document ayant une mention "Copyright" ne doit être diffusé sur ce forum, il y va de notre responsabilité et donc sera effacé sans préavis.
    Merci de votre compréhension.

  4. #3
    LPFR

    Re : Programmation language C

    Bonjour.
    C'est surprenant Hulk, mais je vois seulement le nom de l'auteur. Je ne vois pas de copyright ou de reproduction interdite.
    Tous les documents et programmes sous licence GNU comportent le non de l'auteur et ne sont pourtant pas interdits de diffusion.
    D'où concluez-vous que le document est sous copyright?
    Au revoir.

  5. #4
    invite03481543

    Re : Programmation language C

    En fait ce que tu vois en dessous du 1er code (les étoiles en vert) a été effacé, le code assembleur qui s'y trouvait était un code source émanant du marchand de kit (VELLEMAN) dont kartman17 voulait que l'on se base pour modifier le code source du haut.

    Code:
    ;**************************************************************************
    ;*           VELLEMAN   High-Q KIT  K8048/VM111 SAMPLE SOFTWARE           *
    ;**************************************************************************
    ;*           DEMO1: Simple Running light for testing LD1...LD5            *
    ;*	     DEMO1: Program for testing K8048/VM111 with PIC16F627!       *
    ;**************************************************************************
    ;*          (C) VELLEMAN Components,2003  All rights reserved             *
    ;**************************************************************************
    ;*          Hardw. Rev: P8048'1          Softw. Rev:  1.20                *
    ;*          OSC.......: XT 4MHz Max.     POWER.....:  12V DC              *
    ;**************************************************************************
    ............
    Dernière modification par HULK28 ; 17/05/2008 à 17h59.

  6. A voir en vidéo sur Futura
  7. #5
    LPFR

    Re : Programmation language C

    Bonjour.
    Merci Hulk, c'est clair.
    Au revoir.

  8. #6
    tresorunikin

    Re : Programmation language C

    Mais aussi faut-il songe a la mention: ''ce sujet est resolu'' n'estce pas?

  9. Publicité
  10. #7
    adam7

    Re : Programmation language C

    j'apprend le language c et je veux acheter (PIC16F627);travaille 'elle avec le language c.
    merci beaucoup a tout le monde
    adam

  11. #8
    vede

    Cool Re : Programmation language C

    .

    BONSOIR adam7,

    et oui... la 16F627 elle peut travailler avec le langage C...
    comme tous les PICS...

    vede
    ;O]
    ____________________________
    VIVE les PICS ;O] et les AVRS ;O]

    ps : joli coup de pelle adam7 ;O]

    .

Discussions similaires

  1. recherche d'aide programmation language C
    Par vincent29100 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 31/03/2008, 15h54
  2. Language de programmation
    Par Charlus93 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 12/01/2008, 14h44
  3. Qui connait ce vieux language de programmation?
    Par chris111 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 24/04/2007, 20h30
  4. Language
    Par Tartopommes dans le forum Électronique
    Réponses: 10
    Dernier message: 11/07/2003, 13h26
  5. Debutant dans la programmation des pic:Quel language choisir
    Par pikatchu38 dans le forum Électronique
    Réponses: 2
    Dernier message: 27/01/2003, 21h18
Découvrez nos comparatifs produits sur l'informatique et les technologies.