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
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);
}
}