Merhaba arkadaşlar ccs c konusunda çok yeniyim, and and komutunu bir türlü çalıştıramadım konu hakkında yardımcı olabilirseniz sevinirim.
if ((binler==2)&&(yuzler==3))
bu şekilde yazıyorum ve alt satırda binler ve yüzler hanesini 0 yapamıyorum.Daha doğrusu alt satırı görmeden 24 den devam ediyor.
Tam anlamadım ne demek istediğini ama diyelim ki sayı 2346 olsun.Sen binler hanesini ve ve yüzler hanesini düzgün olarak ayrıştırdıysan yani 2346 daki 2 yi 'binler' değişkenine 3 ü de 'yuzler' değişkenine atadıysan program
if ((binler==2)&&(yuzler==3))
{
// işlenecek komutlar
}
yukarıdaki iki parantez arasını mutlaka işler.
#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#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
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include "flex_lcd.c"
int8 onlar,birler;
int16 k=0;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
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);
lcd_init();
while(TRUE)
{
k++; //k değeri artırılıyor
lcd_getc(1,2); //k değeri lcd ye yazılıyor
printf(lcd_putc,"%02Lu",k);
output_b(k); //k değeri aynı zamanda b portuna gönderiliyor
onlar=k/10; //k değeri onlar basamağı hesaplanıyor
birler=k%10; //k değeri birler basamağı hesaplanıyor
if (onlar==2 && birler==3) //onlar ve birler basamağı istenen değere eşitse komut uygulanıyor
{
lcd_getc(1,1);
printf(lcd_putc,"%u%u",onlar,birler); //basamaklar lcd ye yazılıyor
output_high(PIN_C0); //c0 pini high yapılıyor
}
else //onlar ve birler basamağı istenen değere eşit değilse komut uygulanıyor
{
lcd_getc(1,1);
lcd_putc("00"); //lcd ye 00 yazılıyor
output_low(PIN_C0); // c0 pini low yapılıyor
}
if(k==30) //k değeri 30 a kadar gelince k değişkeni sıfırlanıyor
{
k=0;
}
delay_ms(500); // bekleme uygulanıyor
}
}
Bu kod yardımcı olabilir
Cevaplar için teşekkürler örneğe göre daha öncede denedim fakat olmadı, istediğim şey saat devresinde 23.59'dan sonra 00.00 yazdırmak.Bende ise 24-25 diye devam ediyor, kısaca 23.59 dan sonra yuzler ve binler hanesi sıfır kalacak.
Yazdığın kodun tamamını buraya gönder bakalım.
Alıntı yapılan: "Umitb"
if ((binler==2)&&(yuzler==3))
Kodun bu kısmında bir problem yok. Çalışması gerekiyor. Kodun diğer kısımlarında hata ara.