Pıc ustaları yardım

Başlatan xman, 05 Eylül 2009, 00:07:42

xman

tübitak ın projesini ccsc de düzenlemeye çalıştım kodlar hata vermiyor ama yeterli proteus bilgim olmadığı için deneyemedim bu kodlar çalısırmı yardım...


#include <16f84.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
unsigned char kontrol=0;
unsigned int CX;
//---------------------------------------------------------
// Timer alt programi
// 15 saniye suresince tusa basilmadiysa hatti kapatmak icin
//----------------------------------------------------------
void interrupt_kesme(void)
{
set_timer0(231);

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

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

unsigned char i,komut,şifre[5],sayac;

//----------------------------------------------------------
// Port konfigurasyonu
//----------------------------------------------------------
SET_TRIS_B(0x1F); // PORTB'nin RB5,6,7 pinleri cikis,digerleri giris  
SET_TRIS_A(0x01); // RA0 giris digerleri cikis
//----------------------------------------------------------
output_b(0x00); // cihazlar enerjisiz
output_a(0x00); // hat kapali, LED sonuk
//-------------------------------------------------------------
//Timer islemleri (kesme suresi=1ms)
//-------------------------------------------------------------
SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_256);
// resetten sonra 1 saniye bekle

for(i=0;i<4;i++)DELAY_MS(250);

basla:

sayac=0; CX=0;

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

while(output_high(pin_A0));  


sayac++;

  if(sayac>50){ // Zil sayisi 2
     output_high(pin_a1); // Hatti ac

     şifreoku:
     
     for(i=0;i<5;i++)
     { // şifreyi al

     //--------------------------------------
     kontrol=0;
     SET_TIMER0(231);
     ENABLE_INTERRUPTS(INT_TIMER0);
     ENABLE_INTERRUPTS(INT_RTCC);
     ENABLE_INTERRUPTS(GLOBAL);
     //--------------------------------------

        while(input(pin_b4));
        {   // tusa basilmadi ise bekle
           if(kontrol==1)
           { // sure>15s ise hatti kapat
           output_low(pin_a1);
           goto basla; // basa don
           }
           else {};
        }
     
   
     şifre=output_b(0x0F); // şifreyi oku

     while(input(pin_b4));//(StD==1)); // tus basili ise bekle
     }
     //--------------------------------------
     // şifrenin son hanesi * olmalidir
     
     //--------Sifre konrol------------------
     if(şifre[0]==1 && şifre[1]==2 && şifre[2]==3 && şifre[3]==4 && şifre[4]==11)
     {
     // 11 degeri tus takimindaki * tusuna karsilik gelir.

     output_high(pin_a2); // şifre dogru ise LED'i yak
       
        for(;;)
        {
          while(input(pin_b4));//(StD==0); // cihazlar icin komut beklerb4
                   
           komut=output_b(0x0F);
 
           if(komut==1)
           output_high(pin_b5); // cihaz 1 ON
           if(komut==2)
           output_high(pin_b6);
           if(komut==3)
           output_high(pin_b7);
           if(komut==4)// cihaz 1 OFF
           output_low(pin_b5);
           if(komut==5)
           output_low(pin_b6);
           if(komut==6)
           output_low(pin_b7);
           if(komut==12){ // # tusuna basildi ise hatti kapat
              output_low(pin_a1);
              output_low(pin_a2);
              goto basla;
           // Cihazlarin ON/OFF durumlari degismeden kalir.
           }
        }            
           //--------------------------------------
     }
     
     else{
     goto şifreoku; //şifre yanlis ise tekrar şifre okumaya git
     }
  }

  else{  // sayac<50 ise
  while(output_low(pin_A0));
  }

} // for dongusu
}

sitedekinin orjinali aşşadaki :roll:

// 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,şifre[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

     şifreoku:
     
     for(i=0;i<5;i++){ // şifreyi 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
     şifre=PORTB&0x0F; // şifreyi oku

     while(StD==1); // tus basili ise bekle
     }
     //--------------------------------------
     // şifrenin son hanesi * olmalidir
     
     //--------Sifre konrol------------------
     if(şifre[0]==1 && şifre[1]==2 && şifre[2]==3 && şifre[3]==4 && şifre[4]==11){
     // 11 degeri tus takimindaki * tusuna karsilik gelir.

     LED=1; // şifre 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 şifreoku; //şifre yanlis ise tekrar şifre okumaya git
     }
  }

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

} // for dongusu

}

Okan AKÇA

oncelikle bu tübitak projesimi  bu kadar yardım aldıysanız bi zamet yapın

M_B

Alıntı yapılan: "FxDev"Öncelikle

[ code] [ /code]

tagları kullanalım...
Hangi uygulama acaba bu?

Merhaba Hocam
Nisan 2008 uygulaması
Telefonla uzaktan cihaz kontrolu
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Murat Mert

Bu uygulama anladığım kadarıyla telefondan kontrole benziyor


özür dilerim MB cevaplamış farkına varmadım.
mert07

xman

arkadaslar ben bunu Serdar Çiceğin kitabından bakarak çevirdim ne kadar doğrudur bilemem  pıc ler ve  form'a yazma konusunda yeniyim...

xman

ilginiz için teşekkür ederim