samedi 13 août 2011

Un exemple avec les timer

Bonjour,
Les Timers sont des registres très utiles dans le pic. Ils peuvent simuler le fonctionnement multitâche grâce aux interruptions qui génèrent.  
Dans cet exemple je vais vous montrer comment créer  un signal PWM grâce aux interruption de timer1 d'une pic 16F628A ,
Le code :
int cnt=0;
void interrupt(){
if(TMR1IF_bit){
     cnt++;
     TMR1IF_bit=0;//l3alam yarja3 lelsfer
     TMR1H=0X00;
     TMR1L=0X00;//nfarghou timer1
     }
}

void main() {
portb=0X00;
trisb=0X00;//portb out
T1CON=0X31;//timer1 ye5dem ==TME1ON_bit=1 plus prescaler 1:8
TMR1IF_bit=0;//l3alam fil sfer
TMR1H=0X00;
TMR1L=0X00;//TIMER1 feregh
TMR1IE_bit=1;//INterruption masmou7a
INTCON=0XC0;//GIE et PEIE masmou7in zeda
while(1){
         if(cnt==100){
           portb=~portb;
           cnt=0;
         }
}//mise en veille
}
Visualiser le résultat sur le port B avec un oscilloscope.

2 commentaires:

  1. bonjour
    je vous félicité pour ce travail
    j'ai un problème avec mikroc je veux calculer le temps d'une période de signal carré pour calculer la fréquence de ce signal est ce que vous pouvez me donner une aidé
    merci d’avance contact moi par:
    labib.bnsaadia@gmail.com

    RépondreSupprimer
  2. bonjour rober,
    Pour calculer un temps entre 2 événements (2 fronts montants ou descendants) vous pouvez régler le module CCP en mode capture qui est spécialement conçue pour cette tache.

    RépondreSupprimer