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)
Merci pour votre précieuse aideCode: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.
-----