[Débutant] Problème programmation PIC10F200

Résolu
GroRelou -  
 GroRelou -
Bonjour,
le pic10F200 est composé de 4 pin (extrait du .h):
PIN_B0 (GP0),
PIN_B1 (GP1),
PIN_B2 (GP2/TOCK/FOSC4),
PIN_B3 (GP3/MCLRbar).

j'arrive a mettre les pin B0,B1 et B2 à l'état haut avec :
output_high(PIN_B0);

par contre impossible de mettre PIN_B3 à l'état haut.
pourtant j'ai bien mis : #fuses NOMCLR

programme:
Code:

#include <10f200.h>
#use delay (clock=4000000)
#fuses NOMCLR
void main(){
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
}

3 réponses

toto
 
Bonjour

As-tu lu la doc du PIC,page 12 ?
https://www.microchip.com/
GP3 est une entrée seulement.
0
GroRelou
 
ok merci pour la précision.

j'ai une autre question. Je veux faire l'exercice suivante :
https://www.youtube.com/watch?v=vJ4MmrL-xgY&gl=FR

la personne fait une démonstration sur YouTube et j'ai fais la manip en même temps que lui.

sa marche pour le schéma 1 et 2. mais tout à la fin de la video il y a un schéma 3 qu'il montre rapidement et que j'essai de faire mais je n'y arrive pas car il faut gérer un bouton sur GP3.

A tu une idée de comment il faut faire en gros ?

merci
0
GroRelou
 
je progresse tout doucement car j'ai remarqué une erreur.

Maintenant le port GP3 est constamment à 1. Lorsque je clic sur le bouton le pour GP3 passe à 0.

Quel est la commende en C pour lui dire :

quand GP3 passe à 0 alors ...

merci
0
toto
 
Désolé, je ne connais pas le C du PIC. Je ne programme les pics qu'en assembleur.
La réponse est dans la doc de ton compilateur C, il doit bien avoir des fonctions ou des macro prédéfinies pour lire l'état d'un port.
0
GroRelou
 
En fait c'était tout bête car la condition était: Input(PIN_B3)
voila la réponse :

#include <10f200.h>
#use delay (clock=4000000)
#fuses NOMCLR


void allumePIN_B0(){
output_high(PIN_B0);
delay_ms(250);
output_low(PIN_B0);
delay_ms(250);
}
void allumePIN_B1(){
output_high(PIN_B1);
delay_ms(250);
output_low(PIN_B1);
delay_ms(250);
}
void allumePIN_B2(){
output_high(PIN_B2);
delay_ms(250);
output_low(PIN_B2);
delay_ms(250);
}
void main(){
while(true){
while(INPUT(PIN_B3)){
allumePIN_B0();
delay_ms(250);
allumePIN_B1();
delay_ms(250);
allumePIN_B2();
delay_ms(250);
}
while(!INPUT(PIN_B3)){
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
delay_ms(250);
output_low(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
delay_ms(250);
}
}
}
0