Professional Documents
Culture Documents
2008
Bilgisayar yazılımı olarak Visual Basic veya başka bir programlama dili bilenler kendi
programlarını yazabilirler. Bilgisayar programcılığı ile arası pek iyi olmayanlar
Hyperterminal’i (Start>Programs>Accessories>Communications>Hyperterminal)
kullanabilirler. Eğer belirttiğim yolda Hyperterminal’e ulaşamıyorsanız Program
Ekle/Kaldır’dan Hyperterminal’i yüklemeniz gerekiyor.
Seri portla haberleşmede kullanılacak PIC için C kodu aşağıda verilmiştir. Program
16F84 için yazılmış olmasına rağmen;
#include <16F84.h> satırını değiştirerek istediğiniz bir PIC mikro denetleyiciyi
kullanabilirsiniz.
#use delay(clock=4000000), satırı ile kullandığınız kristal osilatörün hızını, #use
rs232(baud=9600, xmit=PIN_A1, rcv=PIN_A2) satırı ile de seri haberleşmede kullanacağınız
bacakları belirtiyorsunuz.
Hyperterminal’in iletişim hızı 9600 baud olarak ayarlanmış olmalıdır. İç USART’ı
olan PIC’ler için RX ve TX bacaklarını kullanmanız daha verimli olacaktır (örneğin PIC
16F877 için RC7 RX ve RC6 TX bacakları kullanılmalıdır).
#byte port_b = 6 satırı PORTB’nin Register’lar (Register Map) arasındaki yerini
gösterir. PORTA için bu satır #byte port_a = 5 şeklinde değiştirilmelidir. port_A veya port_B
isimleri keyfidir siz bu isimleri programda da değiştirmek şartıyla istediğiniz gibi
değiştirebilirsiniz. set_tris_b( 0x00 ); satırı PORTB’nin çıkış olacağını belirtiyor.
Bir portu giriş yapmak için bu satır set_tris_b( 0xFF ); şeklinde değiştirilmelidir.
While (TRUE) satırı sonsuz bir döngü yaratmak için kullanılmıştır.
Programda önce data adında bir değişken tanımlanıyor ve Hyperterminalden okunan
tuş bu değişkene atanıyor. Daha sonra boş değişken PORTB’ye gönderiliyor. data değişkenini
kullanmayıp port_b = getch(); satırı ile de aynı iş yapılmış olur. delay_ms(1000); satırı 1000
mili saniye yani 1 saniyelik gecikme sağlamak için kullanılmıştır.
Böylece basılan tuşun ascii değeri en az 1 saniye PORTB’deki LED’lerde görülür.
Herhangi bir tuşun ASCII karşılığını öğrenmek için aşağıda verdiğimiz tabloyu
kullanabilirsiniz.
1
17.10.2008
2
17.10.2008
#include <16F84.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_A1, rcv=PIN_A2)
main() {
int data;
printf("calisiyor…\n\r");
while (TRUE)
{
data = getch();
port_b = data; //gönderilen sayıyı portb de göster
delay_ms(1000);
3
17.10.2008
}//sürekli tekrarla
}
PIC’ten Bilgisayara Seri Port ile Bilgi Göndermek
Şimdi de PIC’ ten bilgisayara seri port ile bilgi gönderelim. Bunun için gereken devre
şeması ve C kodları aşağıda verilmiştir. Sekizli anahtarlarla istenen değer girilir. Pullup
dirençleri PIC’in bacaklarının boşta kalıp hatalı değerler okumasını önlemek içindir. RESPAK
8 Sekiz adet direnç içeren pakettir.
Gönderilen bilginin ASCII değeri Hyperterminal de görülecektir. Gerektiğinde yazının
sonunda verilen ASCII tablosundan yararlanabilirsiniz.
PIC’ten Bilgisayara Seri Port ile Bilgi Göndermek için gerekli devre
#include <16F84A.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_A1, rcv=PIN_A2)
4
17.10.2008
main() {
int data;
printf("calisiyor...\n\r");
while (TRUE)
{
}//sürekli tekrarla
}
Daha fazla bilgi almak isteyenlerin aşağıdaki adreslere mail yazmaları yeterli olacaktır.
alisur@engineer.com galip@istanbulcorap.com.tr
5
17.10.2008
ASCII TABLOSU