J'ai 2 questions concernant ces lignes de code dans ce programme du pwm du pic 16f887
if (Button(&PORTA, 0,1,0)) /* Si le bouton connecté à RA0 est
pressé*/
current_duty++ ; // incrémenter la valeur de current_duty
if (Button(&PORTA, 1,1,0)) /* Si le bouton connecté à RA1 est
1- : if (Button(&PORTA, 0,1,0)) dans ces 2 lignes le 1er 0 est pour designer RA0, et le 1 dans la 2eme ligne pour RA1 quelle
est la fonction de 1, 0 qui suit juste apres ?
2- if (Bouton (&.... la fonction bouton me semble permet d'eviter les rebonds des bouton poussoir? et que fait ce signe & ( adresse de )
RA0 ET RA1 sont reliées via des resistances a 5V, donc quand on appuie sur le bouton on les met a 0.
Merci
Code : Tout sélectionner
CCP1CON =0b00111110; /* Uniquement pour la simulation.
Enlever cette instruction avant
de programmer le microcontrôleur*/
PWM1_Init(5000); // Initialisation du module PWM (5KHz)
}
void main() // Programme principal
{
initMain();
current_duty = 155; /* Valeur initiale de variable
current_duty*/
old_duty = 0; // RAZ de variable old_duty
PWM1_Start(); // Start du module PWM1
while (1)
{ // Boucle sans fin
if (Button(&PORTA, 0,1,0)) /* Si le bouton connecté à RA0 est
pressé*/
current_duty++ ; // incrémenter la valeur de current_duty
if (Button(&PORTA, 1,1,0)) /* Si le bouton connecté à RA1 est
pressé*/
current_duty-- ; // décrémenter la valeur de current_duty
if (old_duty != current_duty)
{ /* Si les variables current_duty et
old_duty ne sont pas égales*/
PWM1_Set_Duty(current_duty); // Charger PWM à la nouvelle valeur
old_duty = current_duty; /* Sauvegarder la nouvelle valeur
PORTB = old_duty; et l'afficher sur le PORTB*/
}
Delay_ms(150); // Retardement de 150ms
}
}

un amateur ASM pour debroussailler ceci ?