Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: toprak0258 - 11 Ocak 2013, 14:28:46

Başlık: 12f675 de serı haberlesme
Gönderen: toprak0258 - 11 Ocak 2013, 14:28:46
merhabalar....
12f 675 uzerıne deneme calısmalarımı surduruyorum...bu sefer alıcı verıcı yapmayı denedım...verıcı programı
#include <12f675.h>
#fuses INTRC,NOWDT
#use delay(clock=4000000)
#use fast_io(a)

#define LED1  pin_a0
#define buton1 pin_a4
#define buton2 pin_a1
#define buton3 pin_a2

#use rs232(baud=2400,xmit=pin_a5,parity=N,stop=1)

int x=0;

////////////////////////////////////////
void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);

   
   setup_comparator(NC_NC_NC_NC);

   set_tris_a(0b011110);
   while(1)
   {
   if(input(buton1))
      {
        output_high(LED1);
        delay_ms(500);
        x=100;
        output_low(LED1);
        delay_ms(500);
      }
   if(input(buton2))
      {
        output_high(LED1);
        delay_ms(500);
        x=150;
        output_low(LED1);
        delay_ms(500);
      }
    puts(x);
    delay_ms(10);
   } 
}

guzel bır sekılde çalıştığını dusunuyorum ...cunku bır sorun gözukmuyor...ısıs te de osılaskop bağlayıp denedım...
alıcı noktasında aynı seyı soyleyemem ...derlerken herhangı bır sorun gozukmuyor...ama ısıste calışmıyor...programda sanırım verıyı tanımıyor...bu konuda coskun modılatorunde yapılan derlemeyede baktım ama yıne ıcınde cıkamadım...programı soyledır....#include <12f675.h>
#fuses INTRC,NOWDT
#use delay(clock=4000000)
#use fast_io(a)

#define LED1  pin_a0
#define LED2  pin_a1

#use rs232(baud=2400,rcv=pin_a2,parity=N,stop=1)

int veri;

////////////////////////////////////////
void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);

   
   setup_comparator(NC_NC_NC_NC);

   set_tris_a(0b101100);
   output_a(0x00);
   while(1)
   {
    gets(veri);
    delay_ms(10);
   if (veri==100)
      {
        output_high(LED1);
        delay_ms(500);
        output_low(LED1);
        delay_ms(500);
      }
    if (veri==150)
   //else
     {
        output_high(LED2);
        delay_ms(500);
        output_low(LED2);
        delay_ms(500);
     }
   }


selamlar.....
Başlık: Ynt: 12f675 de serı haberlesme
Gönderen: xoom - 11 Ocak 2013, 15:05:38
kodlarınızı mesaj pencerisinde # simgesiyle [c ode][/c ode] tagleri arasına alırsanız daha anlaşılır olucaktır..
Başlık: Ynt: 12f675 de serı haberlesme
Gönderen: serhat1990 - 11 Ocak 2013, 15:56:18
Merhabalar tam hatırlamamakla beraber , veri gönderim ve alımlarında "putc(x)" ve "x=getc()" yapısını kullanırmısın . Aynı zamanda veriyi içine yazdığın değişkeni "unsigned char x=0;"  yapabilirmisin . Sadece bir öneri ama tek byte gönderiyorsun . puts gets hatırladığım kadarıyla string ifadeler için geçerli.

İyi çalışmalar dilerim ...
Başlık: Ynt: 12f675 de serı haberlesme
Gönderen: toyo - 12 Ocak 2013, 19:22:36
VERİCİ KISIM
#include <12f675.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                       //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                    //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)


#define LED1  pin_a0
#define buton1 pin_a3
#define buton2 pin_a1


#use rs232(baud=2400,xmit=pin_a2,parity=N,stop=1)

int veri=0;

////////////////////////////////////////
void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);

   
   setup_comparator(NC_NC_NC_NC);

   //set_tris_a(0b011110);
   while(1)
   {
   if(input(buton1))
      {
        output_high(LED1);
        delay_ms(500);
       
        output_low(LED1);
        delay_ms(500);
         veri=0x6C;
      }
   if(input(buton2))
      {
        output_high(LED1);
        delay_ms(500);
       
        output_low(LED1);
        delay_ms(500);
        veri=0x7A;
      }
   putc(veri);putc(veri);putc(veri);
    delay_ms(10);
    veri=0;
   } 
}

ALICI KISIM

#include <12f675.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                       //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                    //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)


#define LED1  pin_a0
#define LED2  pin_a1

#use rs232(baud=2400,rcv=pin_a2,parity=N,stop=1)

int veri;

////////////////////////////////////////
void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);
output_a(0x00);
   
   setup_comparator(NC_NC_NC_NC);

   //set_tris_a(0b101100);
   //output_a(0x00);
   while(1)
   {
   
  if(getc()==0x6C)
      {
        output_high(LED1);
        delay_ms(500);
        output_low(LED1);
        delay_ms(500);
      }
    if(getc()==0x7A)
 
     {
        output_high(LED2);
        delay_ms(500);
        output_low(LED2);
        delay_ms(500);
     }
   }


(http://img446.yukle.tc/images/7613Adsiz.png)


Denedim çalışıyor.
serhat1990 saygılar  :)
Başlık: Ynt: 12f675 de serı haberlesme
Gönderen: serhat1990 - 12 Ocak 2013, 21:23:48
İşe yaradıysa ne mutlu bana Hocam :)

iyi çalışmalar dilerim ...
Başlık: Ynt: 12f675 de serı haberlesme
Gönderen: toyo - 12 Ocak 2013, 21:33:27
Yaramaz olurmu çok işimi gördünüz sağolun ..
Teşekkürler sizede iyi çalışmalar .. :D