c kodu ile yazılmış kodları pic basic pro ya çevirme

  • Konbuyu başlatan canakkaleli017
  • Başlangıç tarihi
Katılım
14 Eki 2011
Mesajlar
32
Puanları
1
selam arkadaşlar ben bir devre yaptım ve devrenin yazılımı c kodu ile yapılmış. bu devrenin mantığını çözmek istiyorum. ama c dilini bilmiyorum. o yüzden sizden yardım istiyorum bu yazılımı pic basic proya çevirebilir misiniz??? acil bitirme ödevim bu devre...
 
Konu Sah
Katılım
14 Eki 2011
Mesajlar
32
Puanları
1
selam arkadaşlar ben bir devre yaptım ve devrenin yazılımı c kodu ile yapılmış. bu devrenin mantığını çözmek istiyorum. ama c dilini bilmiyorum. o yüzden sizden yardım istiyorum bu yazılımı pic basic proya çevirebilir misiniz??? acil bitirme ödevim bu devre...

işte kodlar

// 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
}
 

Benzer Konular

Forum istatistikleri

Konular
114,954
Mesajlar
809,285
Kullanıcılar
420,463
Son üye
Umido

Yeni konular

Üst