Microcontrôleur 16f877
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Microcontrôleur 16f877



  1. #1
    invitef397beb4

    Exclamation Microcontrôleur 16f877


    ------

    Bonjour,

    Je suis électronicien autodidacte, j’aimerais concevoir un robot en utilisant une petite revue, là j’ai fait une petite étude, donc j’ai compris le principe général (robot, moteur pas à pas, châssis ect) … j’ai simulé mon projet avec Proteus, avant de passer à la réalisation j’aimerais comprendre le fonctionnement coté programmation on ce qui concerne le microcontrôleur 16f877.

    Donc là je veux tracer les courbes que le robot doit suivre à l’aide du logiciel WinDev 14 (Je suppose que celui-ci m’évitera d’écrire des pages de programmation et de programmer aussi une interface ?)

    Ensuite une fois mon microcontrôleur 16f877 dans le lecteur de carte, que dois-je injecter dedans comme programme ?
    Dans le magasine j’ai trouvé ça sans aucune explication supplémentaire, est ce que ça ne serait pas le programme à flasher dans le microcontrôleur 16f877 ?

    Le programme pascal : (Mikropascal)
    Code:
     
    Program PROGRAMME;
    var V1,V2,I1,I2,ordre,k : integer;
    const PAS1 : array[8] of byte = (%00000101,%00000001,%00001001,%00001000,%00001010,%00000010,%00000110,%00000100) ;
    const PAS2 : array[8] of byte = (%10100000,%10000000,%10010000,%00010000,%01010000,%01000000,%01100000,%00100000) ;
    procedureinit;
    begin
    trisd:=0;
    portd:=0;
    ADCON1:=$82;
    intcon:=0;
    trisa:=$FF;
    trise:=$0;
    V1:=100;
    V2:=100;
      I1:=0;
      I2:=0;
    USART_init(9600); TRISC:=%10111111;
    lcd_config(portb,0,1,2,3,portb,6,5,4);
    lcd_cmd(LCD_CURSOR_OFF);
    lcd_out(1,1,'  ROBOT SUIVEUR  ');
    lcd_out(2,1,'  LFSTIC3   FST  ');
    end;
    procedure communication;
    begin
    ifUsart_Data_Ready = 1 then
    begin
    ordre := Usart_Read;
    end;
    end;
    procedure pas_avant_M1;
    begin
    portD:=((portD AND %11110000) OR PAS1[I1]);
    vdelay_ms(V1);
       I1:=I1+1;
    if I1=8 then I1:=0;
    end;
    procedure pas_avant_M2;
    begin
    portD:=((portD AND %00001111) OR PAS2[I2]);
    vdelay_ms(V2);
       I2:=I2+1;
    if I2=8 then I2:=0;
    end;
    procedure pas_ar_M1;
    begin
    portD:=((portD AND %11110000) OR PAS1[I1]);
    vdelay_ms(V1);
      I1:=I1-1;
    if I1<0 then I1:=7;
    end;
    procedure pas_ar_M2;
    begin
    portD:=((portD AND %00001111) OR PAS2[I2]);
    vdelay_ms(V2);
      I2:=I2-1;
    if I2<0 then I2:=7;
    end;
    
    procedurecommande_manuelle;
    begin
    if portc.0=1 then  pas_avant_M1;
    if portc.1=1 then  pas_ar_M1;
    if portc.2=1 then  pas_avant_M2;
    if portc.3=1 then  pas_ar_M2;
    end;
    
    // programme principal
    begin
    init;
    while (true) do
    begin
    commande_manuelle;
    end;
    end.
    Merci pour votre précieuse aide

    -----
    Dernière modification par HULK28 ; 12/01/2011 à 18h50. Motif: Merci de mettre les balises html qui vont bien !

  2. #2
    vincent66

    Re : Microcontrôleur 16f877

    Bonsoir,
    Je n'ai pas décortiqué ce programme dans les détails... mais ça me semble bien être ce qu'il faut...
    Un microcontroleur se programme basiquement en code machine, une série de nombres placés en mémoire qui indiquent les opérations à effectuer... pour nous simplifier la tache ont été développés des langages évolués apparentés aux idiomes que nous utilisons pour communiquer... mais il faut bien un traducteur , qu'on nomme compilateur et qui génère au niveau du pc le code machine, que le programmateur peut alors aller écrire dans la mémoire du uC.
    Pour les pics il existe panoplie de tels outils, à commencer par ceux fournis par Microchip eux-mêmes, mplab etc...
    Bonne bourre et santé et rigolade cette année !
    Vincent

Discussions similaires

  1. 16f877 et ASM
    Par invite5e1b98cd dans le forum Électronique
    Réponses: 1
    Dernier message: 19/05/2010, 21h13
  2. programmation du 16F877
    Par inviteca158a7a dans le forum Électronique
    Réponses: 8
    Dernier message: 13/05/2010, 19h14
  3. Allumer lumiere maison via 16F877 (microcontroleur)
    Par invite860e6390 dans le forum Électronique
    Réponses: 4
    Dernier message: 01/08/2009, 07h36
  4. 16f877 et 16f877a
    Par invited776d929 dans le forum Électronique
    Réponses: 2
    Dernier message: 25/04/2009, 20h29
  5. RA4 du 16F877
    Par invite28559ad9 dans le forum Électronique
    Réponses: 9
    Dernier message: 04/01/2009, 14h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.