CCS C ile RS232
CCS C ile RS232 |
CCS C ile RS232 haberleşme protokolü çok basittir.. PC den Pic'e – Pic'ten PC' ye herzaman data ASCII karakterleriyle aktarıldığından dolayı yazılımda bunları kontol etmek kolaydır..
Örneğin,siz bilgisayarınızdan terminal programı aracılığıyla pic'e yazı yazdığınızda pic onu ascii karakteri olarak algılar. Elbette arada max232 gibi entegre olması lazım..
max 232 entegresini neden kullanıyoruz derseniz; ;RS232 standardında veri “lojik 1″ ve “lojik 0″ değerlerinden oluşur. Bu değerler artı ve eksi 3 ila 15 volt arasında algılanırlar. -3 ile +3 volt arası yani 0 volt yakınlarındaki voltaj seviyesi RS232 standardında geçerli değildir.Bu entegreyse pic in anlayacağı şekilde alıcı ve verici bacağına ttl voltaj verir yani 5v yada 0v
Bu video da rs232 ile ilgili videolu ders var. İzlemenizi tavsiye ederim
http://www.youtube.com/watch?v=2DQdEHvnqvI
Kodlara gelirsek…. Programı yazarken en önemli kod aşşağıdadır. Bu Kod bizim rs232 yi , 9600 baudrate te c6. bacağı verici , c7. bacağı ise alıcı olarak belirlememizi sağlıyor. Stop biti 1 bit olmalı parity ise None olmalıdır…
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
#include <18F452.h>
#use delay(clock=10000000)
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
//====== LCD Tanıtılıyor ==========//
#include
#define use portd_lcd TRUE
//==============================/
//=======RS232 AYARLARI========//
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
//=============================//
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
while (TRUE) {
printf("rnSinyali Baslatmak icin B tusuna basiniz");
if (getchar() == 'b') //eğer b tuşuna basarsan
{
printf("n1 hz sinyal aktif edildir");
while (1) {
output_high(PIN_B0);
delay_ms(500);
output_low(PIN_B0);
delay_ms(500);
}
}
}
}
rs232 ile ilgili tüm kodları ve isis simulasyonu burdadır