PIC24-LED(Karasimsek)
|Merhaba, Daha önce söylediğim gibi önceden hazırladığım küçük örnek programları sırasız olarak paylaşacağımı söylemiştim. Şimdi de led uygulamaları kapsamına giren karaşimsek led uygulamasının programını ekliyorum. Özellikle yeni başlayanlar için faydalı olacaktır.
/* RB0-RB4 arasında karaşimşek led uygulaması Aykut ULUSAN,Elektronik Mühendisi,IZMIR www.uicroarm.com Uygulama boardu : EX16L-A (16bit development board) www.expkits.com'dan temin edebilirsiniz. */ #include <p24Fxxxx.h> // burada PIC24F serisi kullanacağımızı ifade ettik ama işlemciyi MPLAB içinde seçilir _CONFIG1(0x3F20) // JTAG, WDF, flash memory'ye yazma kullanılmayacak _CONFIG2(0x78EF) // Dahili fast rc osc enable, xtal uçları boş olacak //Karşimşek ledlerindeki RB4'ün yanması için SWDIP6'daki rb4 on konumuna geterilmeli #define NOP() {__asm__ volatile ("nop");} #define CLRWDT() {__asm__ volatile ("clrwdt");} #define SLEEP() {__asm__ volatile ("pwrsav #0");} #define IDLE() {__asm__ volatile ("pwrsav #1");} #define akis_hizi 35 void DLY_10US(unsigned int us); void DLY_MS(unsigned int ms); unsigned char asm_reg; int main(void){ OSCCONbits.COSC=0; // dahili osc CLKDIV=0; PORTA=0; // latch'leri temizle AD1PCFG=0xFFFF; // portlar dijital TRISA=0; asm("NOP"); // A portu çıkış TRISB=0; asm_reg=0x01; // default olarak RB0=1 while(1) { while(asm_reg!=0x10){ PORTB=asm_reg; DLY_MS(akis_hizi); asm_reg<<=1; } while(asm_reg!=0x1){ PORTB=asm_reg; DLY_MS(akis_hizi); asm_reg>>=1; } } } // X*10US void DLY_10US(unsigned int us){ while(us--) { __asm__ volatile ("repeat #165"); __asm__ volatile ("nop"); } } // 65536ms'ye kadar void DLY_MS(unsigned int ms){ while(ms--){ DLY_10US(100); } }