Künye

Okuduğunuz yazı PIC24F dsPIC30F dsPIC33F Uygulamaları Kategorisi altında 31/03/2010 Tarihinde Tarafından Yazıldı - 3.495 kez okunmuş

Yazı Seçenekleri : | Pdf Kayıt | Arkadaşına Gönder | Yazıyı Paylaş | Geri izleme | Yorum takibi

Etiketler : , , , , , ,

Merhaba,
Microchip 16bit PIC24F serisinde Timer kullanımı aşağıdaki gibidir.

/*
Aykut ULUSAN
Elektronik Mühendisi 
IZMIR

www.uicroarm.com

işlemci : PIC24Fj64
Board : EXPKITS  EX16L-A (PIC24F ve PIC33F geliştirme boardu)
*/

#include <p24Fxxxx.h>
// xtal kullanacağız bu nedenle config içinde osc'yi değiştireceğiz, bu durum sadece config2 half word'u etkiler
_CONFIG1(0x3F20)  	// JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x7AAE)	// 10mhz xtal (HS), 

#define	fosc	(10000000)/2
#define tmr2_pr	256
#define	reload	(unsigned short) ((fosc/tmr2_pr)-1)
#define LED1   	LATBbits.LATB0

int
main(void){
	unsigned char c;
	while (OSCCONbits.COSC!=2);
	AD1PCFG=0xFFFF; 
	TRISB=0xFFFE;    //RB0 çıkış
  	T2CON = 0;
  	TMR2 = 0;
  	PR2 = reload;     				// timer'ın limit değeri
  	T2CONbits.TCKPS=3;
  	IFS0bits.T2IF=0;
  	T2CONbits.TON=1;	                  
  	while(1){
    	if(IFS0bits.T2IF){
      		IFS0bits.T2IF = 0;
      		LED1 = !LED1;
      		if(c<5){c++;} 
      		if((4<c)&&(c<15)){c++;PR2 = reload>>1;}	// 0,5sn	
      		if((14<c)&&(c<45)){c++;PR2 = reload>>2;}	// 250ms
      		if((44<c)&&(c<100)){c++;PR2 = reload>>3;}	// 125ms
      		if(c>99){c=0;PR2 = reload;}	
    	}  
  	}
  
  	return 0;  
	
}