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.