Bonjour à tous !
Voilà, je découvre le monde des microcontrolleurs et je dois dire que la datasheet est vraiment indigeste !
En fait, j'aimerais tout simplement allumer une LED lorsque j'appuie sur un bouton.
Mais je n'y arrive pas.
Mon matériel :
- PIC18F45K20 avec une carte avec 44 PIN (PICkit 3 Debug Express (DV164131)) (Video du modèle : https://www.youtube.com/watch?v=TsubDNJClEI)
- PICKIT3 (MPLAB 8.92 + CSS)
- Datasheet : http://ww1.microchip.com/downloads/e...Doc/41303G.pdf
- Leçons en C adaptées à mon PIC mais malheureusement avec un autre compilateur : http://ww1.microchip.com/downloads/e...Doc/41370C.pdf (il y a le schém de la carte p.77 du PDF)
D'après le dernier lien (p.31) :
Le schéma est en pièce jointe et p.77 du PDF (meilleure qualité)The demo board switch is connected to I/O pin RB0, which is normally pulled up to VDD
internally. When the switch is pressed, it pulls RB0 to ground (low state).
The PORTx Special Function Registers are used to read the state of an input pin.
Therefore, reading PORTBbits.RB0 will give the value of the signal on the RB0 pin.
Si je comprends bien le pin RB0 représente l'état du bouton poussoir.
J'ai donc tenté ma chance
Code:/** I N C L U D E S **************************************************/ #include <18F45K20.h> #FUSES INTRC_IO,NOWDT #USE delay (CLOCK=1MHz) #BYTE LATD=0xF8C #BYTE PORTD=0xF83 #BYTE PORTB=0xF81 #BYTE LATB=0xF8A #BYTE ANSELH=0xF7F void main(){ SET_TRIS_D(0b00000000); on met les pins du port B en tant que sortie pour les LED LATD=0; bit_clear(ANSELH,4); // AN8-12 are digital inputs (AN12 on RB0) SET_TRIS_B(0b11111111); // on met les pins du port B en tant qu'entrée pour le bouton poussoirs while(1){ if(bit_test(LATB,0)==0){ // On teste RB0, si le bouton est enfoncé alors RB0=0. bit_set(LATD,2); // On fait allumer la LED2 delay_ms(5000); } if(bit_test(LATB,0)==1){ // On teste RB0, si le bouton est relaché alors RB0=0. bit_set(LATD,7); // On fait allumer la LED7 delay_ms(5000); } } }
La LED2 s'allume constamment et la pression sur le bouton poussoir n'a aucune conséquence...
Merci pour votre aide
-----