alperyazir
Üye
- Katılım
- 25 May 2011
- Mesajlar
- 3
- Puanları
- 1
- Yaş
- 34
3 pici rs232 ile haberleştirmeye ihtiyacım var yazıdığım kodalar şu şekilde ama nedense yanlış çalışıyor. bi bakarmısınız yanlışlarım nerede ,??
bu arada benim istediğim rs232 terminaldeninden girdiğim harflere göre(a,b,c,d) ile ledleri kontrol etmek. örneğin a girdiğimde 1. picteki ledi yakmak b girdiğimde söndürcek. 2 .alıcı içinde c ve d karakterleri aynı görevi yapacak. 2 haftadır uğraşıyorum lütfen bi yardım..
/************************verici***********************/
/********* ANA PROGRAM FONKSİYONU********/
/**************************alıcı1******************/
bu arada benim istediğim rs232 terminaldeninden girdiğim harflere göre(a,b,c,d) ile ledleri kontrol etmek. örneğin a girdiğimde 1. picteki ledi yakmak b girdiğimde söndürcek. 2 .alıcı içinde c ve d karakterleri aynı görevi yapacak. 2 haftadır uğraşıyorum lütfen bi yardım..
/************************verici***********************/
Kod:
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
char klavye[80];
#int_rda // RX ucuna veri gelince meydane gelen kesme
void serihaberlesme_kesmesi ()
{
disable_interrupts(int_rda); // int_rda kesmesini pasif yap
output_high(pin_c5); // RC5 çıkışı lojik-1
gets(klavye); // String ifadeyi al ve "klavye" adlı dizi değişkenine aktar.
printf("\n\rYazdiginiz Metin> %s\n",klavye); // Satır atla, yeni satır,RS232 üzerinden klavye string ifadesini gönder,satır atla
if(klavye[0] == 'a'){output_high(pin_b0); output_low(pin_b1); putc('a');}
if(klavye[0] == 'b'){output_high(pin_b0); output_low(pin_b1); putc('b');}
if(klavye[0] == 'c'){output_high(pin_b1); output_low(pin_b0); putc('c');}
if(klavye[0] == 'd'){output_high(pin_b1); output_low(pin_b0); putc('d');}
output_low(pin_c5); // RC5 çıkışı lojik-0
printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>"); // Satır atla, yeni satır,RS232 üzerinden belirtilen metni gönder
}
/********* ANA PROGRAM FONKSİYONU********/
Kod:
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
output_low(pin_c5); // RC5 çıkışı ilk anda sıfırlanıyor
set_tris_c(0b10000000);
set_tris_b(0x00);
output_b(0x00);
enable_interrupts(GLOBAL); // Aktif edilen tüm kesmelere izin ver
while(1) // Sonsuz döngü
{
enable_interrupts(int_rda); // int_rda kesmesi aktif
}
}
/**************************alıcı1******************/
Kod:
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
char al;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
set_tris_c(0b10000000);
set_tris_b(0x00);
set_tris_a(0x01);
output_b(0x00);
while(1){
al=getch();
if(al=='a') output_high(pin_b0);
if(al=='b') output_low(pin_b0);
}
}
/**************************alıcı2******************/
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
char al;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
set_tris_c(0b10000000);
set_tris_b(0x00);
set_tris_a(0x01);
output_b(0x00);
while(1){
al=getch();
if(al=='c') output_high(pin_b0);
if(al=='d') output_low(pin_b0);
}
}