"Enter"a basıp içeriğe geçin

Seri İletişim -3

Seriporttan gelen daha önceden belirlenmiş bir protokoldeki verinin pic ile alınması. Devre seri iletişim -1 yazısındaki devre ile aynıdır.

Seri iletişim ile ilgili yazdığım ilk yazımda seriport’un debug olarak kullanıldığından bahsetmiştim. Bu örnekte de görüldüğü üzere her bir adıma değerler yazılarak hatanın nerede olduğunu anlamamızı sağlıyor. Böylelikle hata teşhisi çok daha kolay olmaktadır.

[php]

/////////////////////////////////////////////////////////////////
// //
// Seri İletişim uygulaması 3 V1.0 //
// //
// 28/01/2013 *Emrah BUDAK //
// //
// Gelmesi beklenen bilgi #ab* ab=2 byte’lık bilgi //
// //
// Hata kodu 1 = başında # yok //
// Hata kodu 2 = sonunda * yok //
// //
/////////////////////////////////////////////////////////////////
#include <16F628A.h>
#include <string.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1)

#use fast_io(a)
#use fast_io(b)

#define Buton input(pin_a0)

char Buffer[15],Metin[15];
signed int8 size=0;
unsigned int8 Kontrol=0,i=0;

#int_RDA
void RDA_isr(void)
{
Buffer[size]= getch();
size++;
if(size>3)
{
sprintf(Metin,"%s",Buffer);
for(i=0;i<15;i++)Buffer[i]=0;
size=0;
Kontrol=1;
}
}

#int_TIMER0
void TIMER0_isr(void)
{

}

void main()
{
set_tris_a(0b11111111);
set_tris_b(0b11111011);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit); //256 us overflow

enable_interrupts(INT_RDA);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

while(TRUE)
{
if(Kontrol)
{
if(Metin[0]==’#’)
{
if(Metin[3]==’*’)
{
fprintf(PORT1,"Gelen deger=%c%c\r\n",Metin[1],Metin[2]);
Kontrol=0;
}
else
{
fprintf(PORT1,"HataKodu2\r\n");
Kontrol=0;
}
}
else
{
fprintf(PORT1,"HataKodu1\r\n");
Kontrol=0;
}
}
}
}

[/php]

sdsd

4 Yorum

  1. Ediz Ağarer Ediz Ağarer Ocak 29, 2013

    Tasarlamış olduğum PIC geliştirme kartımın hyper terminal ile çalışan bir arayüz sistemini tasarlarken bende buna benzer hata1,hata2, tarzında bişeyler yapmıştım yakında sitemde paylaşayım bari 🙂

    • emrahbudak emrahbudak Ocak 29, 2013

      Paylaş tabi 🙂 bazen insan kendisi yapabilse bile şöyle bi hazır kot arıyo hızlı çözümler yapabilmek için. Ayrıca çok güzel bir kütüphane. Takıldığımda sitemi açıp burada kodları kopyalıyorum 🙂

  2. Gökhan Gökhan Nisan 4, 2013

    Merhaba Emrah bilgilerden dolayi tesekkur ederim. Bir sorum olucakti ben android Telefon um ile bir Program yazdim.Islemci olarak PIC 18f2550 kullaniyorum. Amacim aslinda Telefon dan Robot yönetmek ama su an sadece iki Led i yakip söndürmek kontrol etmek istiyorum Taibii ki ilk etapta mantigi anlamak icin. Ama Pic e yazdigim Program da sorun yasiyorum Bluetooth ile led icin bilgi yolluyorum ama int_rda komutunu bir turlu dogru kullanamiyorum. Acaba Programimi yollasam yardimci olabilir misin? Mail ini verebilirsen ve yardimci olabilirsen cok sevinirim.

  3. emrahbudak emrahbudak Nisan 8, 2013

    mail adresim mail( at )emrahbudak.com. kodu yorum olarak yazmıştım ama kabul etmedi.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir