CCS C for döngüsü ile ilgili bir soru

sasen1

Paylaşımcı üye
Katılım
19 Haz 2008
Mesajlar
1,249
Puanları
106
Merhaba arkadaşlar ccs c de Lcd ye for döngüsü ile 200 e kadar sayıları saydırmak istedim.Ancak 128 den sonra eksi değerde 128 den geriye doğru saymaya başlıyor.Bunun nedeni nedir?Teşekkürler
C:
#include <16F877.h>

#fuses XT,NOWDT,NOPUT,NOLVP,NOCPD,NOPROTECT,NODEBUG,NOBROWNOUT,NOWRT
#use delay(CLOCK=4000000)
#define use_portb_lcd TRUE
#include <lcd.c>

int i=0;

void main()
{
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
  

  
   lcd_init();
  

   for(i=0;i<200;i++)
   {
     printf(lcd_putc,"\f Sayi= %d",i);
     delay_ms(50);
     }
  
   }
 
.Maalesef olmadı.i değişkenini unsigned int olarak tanımladığımda da 128 den sonra eksiye geçip 128 den geriye doğru saymaya başlıyor.-57 de duruyor. Yani 200 sayısını bu şekilde tamamlıyor.Lcd ekranda 200 sayısı görünmüyor.i değişkenini int16 ya tanımladığımda ise printf(lcd_putc,"\f Sayi= %d",i); satırında i için c compiler derleyicisinde printf format type is invalid hatasını veriyor.
sayı negatif.jpgsayı pozitif.jpg
Sorunu çözdüm printf(lcd_putc,"\f Sayi= %d",i) komutunda %sabiti %d yerine %u olması gerekiyor. unsigned int sayılarıda kullanılması gereken %sabiti %u böylece pozitif tamsayıları lcd ekranda saydırabiliyoruz.
lcd %u sabiti.jpg
 
Moderatör tarafında düzenlendi:
Normal int i=0 tanımlamanizi silip for döngüsünün içindeki i için int i=0 olarak düzeltin düzelecektir
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst