12 Serici Pic Programlama Yardım (MPLAB XC8)

Pumppit

Üye
Katılım
9 Mar 2012
Mesajlar
6
Puanları
1
Merhaba ;

16F877a yada 16F84a da mplab xc8 de yazdığım kodlar çalışıyor . Maliyetli olduğu için kodları değiştirerek 12Fxx serisi bir pic kullanarak aşağıdaki kodları yazdım. Örneğin 12F629 kullanarak (6 INPUT/OUTPUT var gözüküyor) aşağıdaki kodlar sorunsuz çalışıyor fakat sadece GP2 den çıkış alabiliyorum. Diğer 3 pinden çıkış alamıyorum.

Yardımcı olursanız çok sevinirim. Daha ucuz bir pic'de olabilir. Yeterki 4 çıkışı olsun :)

C:
#define _XTAL_FREQ 8000000
#include <xc.h>

#pragma config FOSC = XT        // Oscillator Selection bits (HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)


int bekleme = 4;

void adim1() {
    
    GP0 = 1;
    GP1 = 0;
    GP2 = 0;
    GP3 = 0;
    __delay_ms(bekleme) ;
}
void adim2() {
    
    GP0 = 0;
    GP1 = 1;
    GP2 = 0;
    GP3 = 0;
    __delay_ms(bekleme) ;
}
void adim3() {
    
    GP0 = 0;
    GP1 = 0;
    GP2 = 1;
    GP3 = 0;
    __delay_ms(bekleme) ;
}
void adim4() {
    
    GP0 = 0;
    GP1 = 0;
    GP2 = 0;
    GP3 = 1;
    __delay_ms(bekleme) ;
}
void dur() {
  
    GP0 = 0;
    GP1 = 0;
    GP2 = 0;
    GP3 = 0;
    __delay_ms(bekleme) ;
}





void main (){
    
    TRISIO=0x00;
    GPIO=0x00;
    
 
     while(1)
    
     {
 
for (int i = 0; i < 512; i++)
{
    
    adim1();
    adim2();
    adim3();
    adim4();
    }

dur();
__delay_ms(5000);


for (int i = 0; i < 512; i++)
{
    
    adim4();
    adim3();
    adim2();
    adim1();
    }

dur();
__delay_ms(5000);


}
    }
 

tyildizak

Katılımcı Üye
Katılım
17 Ağu 2007
Mesajlar
1,622
Puanları
96
Konum
İstanbul
Öncelikle main fonksiyonunun başında "CMCON = 0x07; " ifadesiyle komparatörler kapatılmalı.

Bunun dışında GP3 sadece giriş için, çıkış alamazsın. Yerine GP4 veya 5 kullanılabilir.

başarılar
 

mehmet.bey

Katılımcı Üye
Katılım
19 Ara 2011
Mesajlar
737
Puanları
58
Daha fazla pin için dahili kristal ile
iki pin daha kazanırsınız. 12F629,
12F675 4MHz ile 12F683 8MHz ile
çalışır.
 

Sponsor Bağlantı

Forum istatistikleri

Konular
105,530
Mesajlar
743,224
Kullanıcılar
392,247
Son üye
ozgurozdemir

Yeni konular

Üst