PİC167F84 için Seri Port Kontrol Programı için yardım ACİLL!!

luckstar1

Üye
Katılım
31 Mar 2012
Mesajlar
16
Puanları
1
arkadaşlar c+ ile yazılmış bir programım var fakat bn bunu galıştırmek istiyorum devreyi biraz değiştirerek bilgisayar ontrollu olsun istiyorum vısual basic ile bı arayuz hazırlayacığım.devre role kontrolu için yapılmış bir devre 3devrede 3 adet role bulunmakta bu roleler açıldığını ve kapandığını bılgısayardan gormek istiyorum aynı zamanda acıksa kapatmak,kapalıysa açmak istiyorum bu şekılde bı program yapmama yardımcı olurmusunuz c ile. programı verebılırım üzerine ekleme yaparsanız sevinirim..






// Telefonla uzaktan cihaz kontrolu projesine ait PIC16F84A programi
// CM8870'in Q1-Q4 cikislari PIC16F84A'nin RB0-RB3 pinlerine baglidir.
// StD ucu RB4'e baglidir. Hat acma rolesi RA1'e baglidir.
// Sifre onay LED'i RA2'ye baglidir.
// Zil calma sayisi icin pals devresi RA1'e baglidir.
// Kontrol edilecek cihazlar sirasiyla RB5,RB6,RB7'ye baglidir.


#include <pic.h>
#include <delay.c>


#define StD RB4
#define HAT_ROLE RA1
#define LED RA2
#define PALS RA0


// 4MHz osilator
__CONFIG(XT&WDTDIS&PWRTEN);


unsigned char kontrol=0;
unsigned int CX;


//----------------------------------------------------------
// Timer alt programi
// 15 saniye suresince tusa basilmadiysa hatti kapatmak icin
//----------------------------------------------------------
void interrupt kesme(void){


CX++;
if(CX>15000)kontrol=1;

T0IF=0; // bayragi temizle
TMR0=131;
}
//----------------------------------------------------------




//----------------------------------------------------------
// ANA PROGRAM
//----------------------------------------------------------
main(void){


unsigned char i,komut,sifre[5],sayac;


//----------------------------------------------------------
// Port konfigurasyonu
//----------------------------------------------------------
TRISB=0x1F; // PORTB'nin RB5,6,7 pinleri cikis,digerleri giris
TRISA=0x01; // RA0 giris digerleri cikis
//----------------------------------------------------------


PORTB=0; // cihazlar enerjisiz
PORTA=0; // hat kapali, LED sonuk


//-------------------------------------------------------------
//Timer islemleri (kesme suresi=1ms)
//-------------------------------------------------------------
T0CS=0; // Dahili clock
PSA=0; // Prescaler TMR0 icin ayarli
PS0=0; PS1=1; PS2=0; // Oran 1:8
ei(); // butun kesmeler etkin
T0IE=0; //Baslangicta timer pasif
T0IF=0; // bayrak temizle
//-------------------------------------------------------------


// resetten sonra 1 saniye bekle
for(i=0;i<4;i++)DelayMs(250);


basla:


sayac=0; CX=0;


for(;;){ // zil sayisi belirleme dongusu


while(PALS==1);


sayac++;


if(sayac>50){ // Zil sayisi 2
HAT_ROLE=1; // Hatti ac


sifreoku:

for(i=0;i<5;i++){ // sifreyi al


//--------------------------------------
kontrol=0;
TMR0=131; //
T0IE=1; // TIMER ON


//--------------------------------------


while(StD==0){ // tusa basilmadi ise bekle
if(kontrol==1){ // sure>15s ise hatti kapat
HAT_ROLE=0; goto basla; // basa don
}
else {};
}


T0IE=0; CX=0; // Tusa basildi ise Timer'i durdur, CX'i sifirla
// Boylece yeni bir 15s'lik ek sure kazanilmis olur
sifre=PORTB&0x0F; // sifreyi oku


while(StD==1); // tus basili ise bekle
}
//--------------------------------------
// sifrenin son hanesi * olmalidir

//--------Sifre konrol------------------
if(sifre[0]==1 && sifre[1]==2 && sifre[2]==3 && sifre[3]==4 && sifre[4]==11){
// 11 degeri tus takimindaki * tusuna karsilik gelir.


LED=1; // sifre dogru ise LED'i yak

for(;;){
while(StD==0); // cihazlar icin komut bekle

komut=PORTB&0x0F;

if(komut==1)RB5=1; // cihaz 1 ON
if(komut==2)RB6=1;
if(komut==3)RB7=1;
if(komut==4)RB5=0; // cihaz 1 OFF
if(komut==5)RB6=0;
if(komut==6)RB7=0;

if(komut==12){ // # tusuna basildi ise hatti kapat
HAT_ROLE=0; LED=0; goto basla;
// Cihazlarin ON/OFF durumlari degismeden kalir.
}
}
//--------------------------------------
}

else{
goto sifreoku; //sifre yanlis ise tekrar sifre okumaya git
}
}


else{ // sayac<50 ise
while(PALS==0);
}


} // for dongusu


}








Program bu arkadaşlar yardımlarınızı eksin görmeyin düşüncelerinizi yazın hiç değilse..
 

Forum istatistikleri

Konular
133,538
Mesajlar
972,128
Kullanıcılar
459,641
Son üye
fodil

Yeni konular

Çevrimiçi üyeler

Şu anda çevrimiçi üye yok.
Geri
Üst