İki Tane 16f628a 'nın rs232 Haberleşme Sorunu

Başlatan muhendis.NT, 27 Şubat 2017, 14:20:45

muhendis.NT

Arkadaşlar proteustaki gibi bir devre kurdum. Proteusta çalışan haberleşme gerçekte çalışmıyor. İki pici de önce led yakıp söndürme testi ile test ettim. Beslemelerinde ve osilatörlerinde(kristal)  sıkıntı yok. rs232 ile haberleştiriyorum. Nerede hata yapıyorum arkadaşlar lütfen yardımcı olun. Bu kodların benzeri 16f877'de çalıştı. Burada çalışmıyor. 


Verici Kodlar :
#include <verici.h>                                                              //"<" ile "Rx_haberlesme.h>" arasında boşluk bırakmayınız.
#use delay(clock=20Mhz)
#use rs232 (baud=9600, xmit=pin_B2, rcv=pin_B1, parity=N, stop=1)   //seri haberleşme işleminin başlangıcı için tanımlamız gereken yerdir.Baud hızı 9600,4800,2400,1200,300 vb. şekilde seçilebilir. xmit=MikroDenetleyicimizdeki Tx ucunun yeridir. rcv=MikroDenetleyicideki Rx ucunun yeridir.
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

void main()
{
set_tris_a(0xff);                                                                              //A portu giriş olarak ayarlandı.

while(TRUE)
{

if(input(PIN_A1) == 1) {
delay_ms(100);
while(input(PIN_A1)){
}
putc('a');
}



if(input(PIN_A0) == 1) {
delay_ms(100);
while(input(PIN_A0)){
}           
putc('b');             //6                                                                        //"a" karakterini yolla


}


}
}


Alıcı Kodları :
#include <alici.h>
#use delay(clock=20Mhz)
#use rs232 (baud=9600, xmit=pin_B2, rcv=pin_B1, parity=N, stop=1)
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection


void main()

set_tris_a(0x00);

while(TRUE)
{

char gelen=getchar();                                      // gelen veriler char adındaki gelen adlı değişkene kaydediliyor


if(gelen=='a'){
output_high(PIN_A1);
delay_ms(500);
output_low(PIN_A1); 
delay_ms(500);                            // gelen karakter "a" ise LED i yak
}


if(gelen=='b'){                                              //gelen karakter "b " olduğunun da LED YAK ve 500 ms sonra söndür.
output_high(PIN_B6);
delay_ms(500);
output_low(PIN_B6);
delay_ms(500);
}}}








fatih88

#1
mühendis.nt void setup üzerinde portları açmamışın
#use fast_io(a)
#use fast_io(b)
portları aç
void setup ta
set_tris_a(0xff);output_a(0x00);
set_tris_b(0x00);output_b(0x00); yap
muhtemelen çalışır
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Powered by EzPortal