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
127,950
Mesajlar
913,845
Kullanıcılar
449,596
Son üye
anilhikmet

Yeni konular

Geri
Üst