HALER
Üye
- Katılım
- 31 Ağu 2012
- Mesajlar
- 4
- Puanları
- 1
- Yaş
- 39
Merhaba ;
Pic16f628 ile RF alıcı verici yapıyorum. verici kısmından dört farklı bilgi göndericem.ilk iki bilgi alıcı çıkışına bağlı led leri yakıyor burda sorun yok. 3. bilgi de şunu yapmak istiyorum . eğer 1. ve 2. led yanıyor ise 3. bilgi geldiğinde 3. ledi yak.yani ilk iki bilgi gelmediyse 3. led yanmasın istiyorum. (bu arada 4. bilgi hepsini resetliyor onda da sorunum yok ) ama bu 3 koşullu satırı yazamadım. altta ALICI devreye ait pic yazılımını veriyorum .
Eğer vericiden 'D' bilgisi gelirse;
eğer vericiden pin_a1 bilgisi gelmiş ise;
eğer vericiden pin_b0 bilgisi gelmiş ise;
bu şartlar sağlandığında pin_b4 yansın.
benim yazdığım yazılımda 'D' verisi gönderildiğinde alıcıda pin_a1 sönüyor ve pin_b4 yanmıyor.
ALICI PIC:
#include "C:\Users\win7\Desktop\alici verici 3 kesme uygulaması\alici3.h"
#fuses xt,nowdt,nobrownout,nolvp,nocpd,noprotect,noput
#use delay(clock=4M)
#use rs232(baud=600,parity=N,rcv=pin_b1,bits=8)
char e;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab
set_tris_b(0b00000010);
set_tris_a(0x00);
output_b(0x00);
while(1)
{
if(getch()=='X')
{
e=getch();
if(e=='A')
{
output_high(pin_B0);
}
if(e=='B')
{
output_high(pin_a1);
}
if (e=='D' && input(pin_a1)==1 && input(pin_b0)==1) /*bu satırda sorunum
var bu koşulu nasıl sağlarım*/
{
output_low(pin_b4);
}
if(e=='C')
{
output_LOW(pin_a1);
}
if(e=='C')
{
output_low(pin_b0);
}
if(e=='C')
{
output_low(pin_b4);
}
}
}
}
LAZIM OLURSA DİYE VERİCİ PIC:
#include "C:\Users\win7\Desktop\alici verici 3 kesme uygulaması\verici3.h"
#fuses xt,nowdt,nobrownout,nolvp,nocpd,noprotect,noput
#use delay(clock=4M)
#use rs232(baud=600,parity=N,xmit=pin_b2,rcv=pin_b1,bits=8)
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
while(1)
{
set_tris_b(0x00);
output_b(0x00);
if(input(pin_a0)==1)
{
putc(0b01010101);
putc('X');
putc('A');
delay_ms(50);
}
if(input(pin_a1)==1)
{
putc(0b01010101);
putc('X');
putc('B');
delay_ms(50);
}
if(input(pin_a2)==1)
{
putc(0b01010101);
putc('X');
putc('C');
delay_ms(50);
}
if(input(pin_a3)==1)
{
putc(0b01010101);
putc('X');
putc('D');
delay_ms(50);
}
}
}
Pic16f628 ile RF alıcı verici yapıyorum. verici kısmından dört farklı bilgi göndericem.ilk iki bilgi alıcı çıkışına bağlı led leri yakıyor burda sorun yok. 3. bilgi de şunu yapmak istiyorum . eğer 1. ve 2. led yanıyor ise 3. bilgi geldiğinde 3. ledi yak.yani ilk iki bilgi gelmediyse 3. led yanmasın istiyorum. (bu arada 4. bilgi hepsini resetliyor onda da sorunum yok ) ama bu 3 koşullu satırı yazamadım. altta ALICI devreye ait pic yazılımını veriyorum .
Eğer vericiden 'D' bilgisi gelirse;
eğer vericiden pin_a1 bilgisi gelmiş ise;
eğer vericiden pin_b0 bilgisi gelmiş ise;
bu şartlar sağlandığında pin_b4 yansın.
benim yazdığım yazılımda 'D' verisi gönderildiğinde alıcıda pin_a1 sönüyor ve pin_b4 yanmıyor.
ALICI PIC:
#include "C:\Users\win7\Desktop\alici verici 3 kesme uygulaması\alici3.h"
#fuses xt,nowdt,nobrownout,nolvp,nocpd,noprotect,noput
#use delay(clock=4M)
#use rs232(baud=600,parity=N,rcv=pin_b1,bits=8)
char e;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab
set_tris_b(0b00000010);
set_tris_a(0x00);
output_b(0x00);
while(1)
{
if(getch()=='X')
{
e=getch();
if(e=='A')
{
output_high(pin_B0);
}
if(e=='B')
{
output_high(pin_a1);
}
if (e=='D' && input(pin_a1)==1 && input(pin_b0)==1) /*bu satırda sorunum
var bu koşulu nasıl sağlarım*/
{
output_low(pin_b4);
}
if(e=='C')
{
output_LOW(pin_a1);
}
if(e=='C')
{
output_low(pin_b0);
}
if(e=='C')
{
output_low(pin_b4);
}
}
}
}
LAZIM OLURSA DİYE VERİCİ PIC:
#include "C:\Users\win7\Desktop\alici verici 3 kesme uygulaması\verici3.h"
#fuses xt,nowdt,nobrownout,nolvp,nocpd,noprotect,noput
#use delay(clock=4M)
#use rs232(baud=600,parity=N,xmit=pin_b2,rcv=pin_b1,bits=8)
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
while(1)
{
set_tris_b(0x00);
output_b(0x00);
if(input(pin_a0)==1)
{
putc(0b01010101);
putc('X');
putc('A');
delay_ms(50);
}
if(input(pin_a1)==1)
{
putc(0b01010101);
putc('X');
putc('B');
delay_ms(50);
}
if(input(pin_a2)==1)
{
putc(0b01010101);
putc('X');
putc('C');
delay_ms(50);
}
if(input(pin_a3)==1)
{
putc(0b01010101);
putc('X');
putc('D');
delay_ms(50);
}
}
}