algooo
Üye
- Katılım
- 30 Ocak 2012
- Mesajlar
- 3
- Puanları
- 1
- Yaş
- 29
Merhaba arkadaşlar.
proje ödevim olan 0-99 sayıcı devresinin 1 artırma 1 azaltma butonu var aynı zamanda devrede bir röle var her 10 rakamda bir röle çekiyor.
devreyi kurdum artırma butonuna basınca sayı displayde 0.1.2.3.4.5.6.7.0.1.10 şeklinde gidiyor yani 8 yerine 0, 9 yerine 1 görünüyor. simülasyonda düzgün çalışmasına rağmen gerçeğinde böyle bir problem var. 4511 in bağlanıtısını b portuna yaptım. B0,B1,B2,B3 portlarında 4511i entegresini girişleri B4 ve B5 portlarında da bir röle ve röle çekince yanan bir led var. Sayı 7 den sonra 0a gelince B4 portundaki Röle LEDi de yanıyor. acaba pic 4511 e gönderiği sayıyı tüm b portuna mı gönderiyor yoksa yazılımda mı bir problem var?
Yardımlarınız için teşekkür ederim.
proje ödevim olan 0-99 sayıcı devresinin 1 artırma 1 azaltma butonu var aynı zamanda devrede bir röle var her 10 rakamda bir röle çekiyor.
devreyi kurdum artırma butonuna basınca sayı displayde 0.1.2.3.4.5.6.7.0.1.10 şeklinde gidiyor yani 8 yerine 0, 9 yerine 1 görünüyor. simülasyonda düzgün çalışmasına rağmen gerçeğinde böyle bir problem var. 4511 in bağlanıtısını b portuna yaptım. B0,B1,B2,B3 portlarında 4511i entegresini girişleri B4 ve B5 portlarında da bir röle ve röle çekince yanan bir led var. Sayı 7 den sonra 0a gelince B4 portundaki Röle LEDi de yanıyor. acaba pic 4511 e gönderiği sayıyı tüm b portuna mı gönderiyor yoksa yazılımda mı bir problem var?
Yardımlarınız için teşekkür ederim.
Kod:
#include <16F628A.h>#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES NOPROTECT
#FUSES NOBROWNOUT
#FUSES NOMCLR
#FUSES NOLVP
#FUSES NOCPD
#use delay(clock=4000000)
#byte port_a=5
#byte port_b=6
signed long int birler=0,onlar=0, y=0,i=0;
void display ()
{
birler=i%10;
onlar=i/10;
output_b(birler);
output_low(pin_a0);
delay_ms(20);
output_high(pin_a0);
output_b(onlar);
output_low(pin_a1);
delay_ms(20);
output_high(pin_a1);
}
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);
set_tris_a(0b00111100);
set_tris_b(0b11110000);
output_b(0x00);
while(true)
{
if(input(pin_a2)==0)
{
delay_ms(20);
while(input(pin_a2)==0);
i++;
if(i>99) i=99;
display ();
}
if(input(pin_a3)==0)
{
delay_ms(20);
while(input(pin_a3)==0);
i--;
if(i<0) i=0;
display ();
}
if((birler==0)&&(i!=0))
{
output_high(pin_b4);
output_high(pin_b5);
}
if(input(pin_a4)==0)
{
delay_ms(20);
while(input(pin_a4)==0);
output_high(pin_b4);
output_high(pin_b5);
}
if(input(pin_a5)==0)
{
delay_ms(20);
while(input(pin_a5)==0);
output_low(pin_b4);
output_low(pin_b5);
}
if(i==99)
{
do
{
output_high(pin_b4);
output_high(pin_b5);
delay_ms(100);
output_low(pin_b4);
output_low(pin_b5);
delay_ms(100);
y++;
}
while(y==100);
}
}
}