Ynt: ccs c ile 16f877a rs232 pc den pice veri göndermek

Başlatan point_blank, 27 Ocak 2013, 18:30:42

point_blank

merhaba arkadaşlar ben  ccs c ile 16f877a picten hyper terminale veri atıyorum ama pc den pice veri atamıyorum lütfen yardım edin ccs c kodları aşağıda

#include <16f877a.h>
#fuses xt,nowdt,nowrt,nodebug,nolvp,nocpd,noput,noprotect,nobrownout
#use delay(clock=4M)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,parity=N,stop=1)
char islem;
void main()
{

while(true)
{
printf("yakmak icin lutfen b ye>>");
islem=getch();

if(islem=='b')
{
output_high(pin_e0);
delay_ms(5000);
}

if(islem=='i')
{
output_high(pin_e0);
output_high(pin_e1);

printf("\n\nsondurmek icin s basiniz");
}
if(islem=='s')
{
output_low(pin_e0);
output_low(pin_e1);
}
}
}

mesaj birleştirme:: 27 Ocak 2013, 18:33:34

b tusuna bastıgımda hep lutfen b ye basınız yazıyor her b tusuna basınca lutfen b tusuna basınız yazısı kendini tekrarlıyor

skara1214

Alıntı yapılan: point_blank - 27 Ocak 2013, 18:30:42
#include <16f877a.h>
#fuses xt,nowdt
#use delay(clock=4M)
#use rs232(baud=9600,UART,ERRORS)
char islem;
void main()
{
while(true)
{
printf("yakmak icin lutfen b ye>>");
islem=getch();
if(islem=='b')
{
output_high(pin_e0);
delay_ms(5000);
}
}
}
bu kodu bir deneyin birde hyper terminali flow control none yapın ayrıca büyük küçük harf önemli caps locku kapatın.
Herkes ölür ama herkes gerçekten yaşamaz

point_blank

bu sefer hiç bir sekilde hyper terminaline yazı gelmedi

yusuf3101

#3
buyur bunu derle beğenmediğin yeri değiştirirsin ben denedim problemsiz çalışıyor menüde hoş oldu :)

kolay gelsin..

#include <16f877a.h>
#fuses xt,nowdt,nowrt,nodebug,nolvp,nocpd,noput,noprotect,nobrownout
#use delay(clock=4M)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,parity=N,stop=1)
char islem;
void main()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI 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ışı
   set_tris_e(0x0);
   output_e(0x0);
   printf("\n\r ****************************************");
   printf("\n\r ***** E0 aktif icin (B) tusuna bas *****");
   printf("\n\r ****************************************");
   printf("\n\r ** E0 ve E1 aktif icin (İ) tusuna bas **");
   printf("\n\r ****************************************");
   printf("\n\r ***** Sondurmek icin (S)tusuna bas *****");
   printf("\n\r ****************************************\n\r");
   delay_ms(100);
   
   while(1)
      {
       islem=getch();

      if(islem=='b'||islem=='B')
       {
        printf("\n\r ++ E0 Yaniyor\n\r");
        output_high(pin_e0);
        delay_ms(100);
       }

      if(islem=='i'||islem=='İ')
       {
        printf("\n\r ++ E0 ve E1 Yaniyor\n\r");
        output_high(pin_e0);
        output_high(pin_e1);
        delay_ms(100);
       }
       
      if(islem=='s')
       {
        printf("\n\r -- E0 ve E1 Yanmiyor\n\r");
        output_low(pin_e0);
        output_low(pin_e1);
        delay_ms(100);
       }
      }
}



mesaj birleştirme:: 27 Ocak 2013, 19:59:46

ayrıca vermiş olduğum kodlarda küçük büyük harf farketmiyor ikisiyle de komutların çalışıyor

skara1214

bu arada dikkat ettim whilein içinde başka printf yokki sen b ye basınca  e0 i high edip geri printf("b ye basınız" a dönüyor  eğer  ikinci printf i çalıştırmak istiyorsan onu i nin ifinin içinden çıkart  ve altına getch koy
Herkes ölür ama herkes gerçekten yaşamaz

point_blank


yusuf3101

#6
buyur isis ve kodlar bunun içinde ben denedim herşey normal bi şekilde çalışıyor

http://s2.dosya.tc/server25/atiHM0/picproje.rar.html

mesaj birleştirme:: 27 Ocak 2013, 20:39:41

kardeş   printf("\n\r ** E0 ve E1 aktif icin (İ) tusuna bas **");  bu satırdaki " i " harfini küçük yaparsan menüde gözükür ben yanılmış büyük yazmışım

birde isis de virtual terminal penceresi açıldığı zaman pencerenin içinde herhangi bir yerde mausu sağ tıkla çıkan seçeneklerde Echo Typed Characters  kısmını işarete bunu yapmandaki sebep klavyeden girdiğin karakterleri pencerede görebilmen..

point_blank

yusuf kardeş sagolasın elimde devre baskısı hazır dire yazılımı pice atıom pc de deniom senin gönderdiğin kodlar calısıyor ancak yine aynı sekilde b ye basıom tekrar hazılamıs oldugun menü geliyor

yusuf3101

yaptığın baskı devrenin herşey net görünecek şekilde fotografını çekip gönerirsen bakabilirim. yüksek ihtimal senin pic kendiliğinden resetleniyo yoksa menünün tekrar gelmesi imkansız while(1); döngüsüne girdiği zaman birdaha o döngüden çıkmaz

point_blank

while döngusunden önce e0 baglı ledi yaktım ne olup olmadıgını picin kendini rsetleyip resetlemediğini anlamak için evet pic kendini resetlio while döngusunden önce e0 pinini yaktım b tusuna basınca led sönuyor b tusundan elimi cekince klavyeden led geri yanıo

yusuf3101

sorunu çözdün mü çözemedin mi anlamadım kardeşim  :-\

point_blank

kardeş sorun şuan bilgisayardan pice veri gönderirken pic kendini resetliyor sebebi ne olabilir

yusuf3101

max232 devrende hata olabilir bende CCS c ye ilk başladığım sıralar rs232 haberleşmesi üzerine uğraşıyordum fakat dediğin gibi sorunla karşılaşmadım sen devreni elemanlarını ve bağlantıyı iyi göreileceğim şekilde fotografını çekersen yardımcı olabilirim

point_blank

#13
max 232 nin baskı seması

yusuf3101



RTS ile CTS kısa devre olacak birde 15 ile 16 nolu pinlerdeki kondansatör fazla ben yukardaki devre ile birçok denemelerimi problemsiz yaptım

konrtol et istersen