ultrasonik

Başlatan selvi, 11 Mayıs 2007, 16:40:53

selvi

dogan ibrahim in PIC C ile ses projeler kitabinda ultrasonok projesine ekleme yaptim.hata verdi duzeltemedim.sayac,pause degiskenlerini ekledim.birde su komutlari:pause=PORTB;
   pause=pause>>4;
   pause&=0xOF;
ve
sayac++;
      while(sayac==pause)
      {
         RA4=1;
      }
komutlarini programa ekledim.programa eklenmis hali asagidadir.


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

unsigned char bayrak;
void bir_saniye(void)
{
   unsigned char j;
   for(j=0;j<4;j++)DelayMs(250);
}

void interrupt bitti(void)
{
   bayrak=1;
   T0IF=0;
   di();
}

puls_gonder()
{
   unsigned char j;
   
   TMR0=0;
   for(j=0;j<40;j++)
   {
      RA0=1;
      DelayUs(15);
      RA0=0;
      DelayUs(10);
   }

   T0IE=1;
   T0IF=0;
   ei();
}
main(void)
{
   unsigned int zaman,tyanki,uzaklik,tamuzak,pause,sayac=0;
   unsigned char goster[]="UZAKLIK= ";
   TRISB=0xF0;
   TRISA=2;

   T0CS=0;
   PSA=0;
   PS0=1;
   PS1=1;
   PS2=1;

   RA0=0;
   bir_saniye();
   lcd_init();
   lcd_clear();
   lcd_puts("UZAKLIK OLCUMU");
   bir_saniye();
   lcd_clear();

   for(;;)
{
   pause=PORTB;
   pause=pause>>4;
   pause&=0xOF;
   bayrak=0;
   puls_gonder();
   while(RA1==0 && bayrak==0);
   if(bayrak==0)
   {
      sayac++;
      while(sayac==pause)
      {
         RA4=1;
      ]
      zaman=TMR0;
      tyanki=zaman/4;
      uzaklik=17*tyanki;
      tamuzak=uzaklik+tyanki/4;
      sprintf(goster+9,"%d",tamuzak);
      lcd_clear();
      lcd_puts(goster);
      bir_saniye();
   }
   else
   {
      lcd_clear();
      lcd_puts("BELIRSIZ");
      bir_saniye();
   }
}
}
Yaşam anlamlandırıldıkça kutsaldır....

selvi

programi simulasyonda calistirdim.fakat porta,ra1 ayagina baglanan bir butonla ra4 ayagina baglanan ledi yakmak istiyorum.ra1 e baglanan ledin yanmasi icin (sayac==para )bu esitligin saglanmasi gerekiyor.ra1 ayagina baglanan butonla her basildiginda sayac degeri 1 artsin.para degiskenide portb nin ust bitlerine baglanan switch lerle bir deger ataniyor.programin son hali asagidadir.nasilbir degisiklik gerekiyor.

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

unsigned char bayrak;
void bir_saniye(void)
{
unsigned char j;
for(j=0;j<4;j++)DelayMs(250);
}

void interrupt bitti(void)
{
bayrak=1;
T0IF=0;
di();
}

puls_gonder()
{
unsigned char j;

TMR0=0;
for(j=0;j<40;j++)
{
RA0=1;
DelayUs(15);
RA0=0;
DelayUs(10);
}

T0IE=1;
T0IF=0;
ei();
}
main(void)
{
unsigned int zaman,tyanki,uzaklik,tamuzak,para,sayac=0;
unsigned char goster[]="UZAKLIK= ";
TRISB=0xF0;
TRISA=2;

T0CS=0;
PSA=0;
PS0=1;
PS1=1;
PS2=1;

RA0=0;
bir_saniye();
lcd_init();
lcd_clear();
lcd_puts("UZAKLIK OLCUMU");
bir_saniye();
lcd_clear();

for(;;)
{
para=PORTB;
para=para>>4;
para&=00001111;
bayrak=0;
puls_gonder();
while(RA1==0 && bayrak==0);
if(bayrak==0)
{
if(RA1==1)
{
sayac++;
}
while(sayac==para)
{
RA4=1;
}
zaman=TMR0;
tyanki=zaman/4;
uzaklik=17*tyanki;
tamuzak=uzaklik+tyanki/4;
sprintf(goster+9,"%d",tamuzak);
lcd_clear();
lcd_puts(goster);
bir_saniye();
}
else
{
lcd_clear();
lcd_puts("BELIRSIZ");
bir_saniye();
}
}
}
Yaşam anlamlandırıldıkça kutsaldır....