Yazılımda sorun

Başlatan bbs2006, 07 Ağustos 2010, 23:52:19

bbs2006

Merhaba
CCS C kullanarak isteilen açıda servo motoru döndürmek istiyorum. bunun için
3 karakterli lcd kullandım.
ama 3. satıra yazdıramıyorum.
olması gerekenler fark=500   derece 5.55   ve daci  1666.5 olması gerekiyor ben lcd de fark görüyorum ama derece 5.00 çıkıyor
daci  1650 çıkyor  sorun ne olabilir.

//SERVO MOTOR KONTROL PROGRAMI- ORNEK-1
//PD0: Servo kontrol sinyali için kullanılacak
#include <16F877.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
long int per=20000;   //servonun çalışma peryodu usn.
long int baskonum=1500; //başlangıc kounm
long int sonkonum=2000; // son konum
long int fark;        //başlangıc ile son konum farkı
float derece;      //derece başına düşen deger 
int aci=30;        //dönme açısı
int aciara=90;    //başlangıç ile son deger arası açı degeri 
long int hsp;        //hesaplanan deger 
long int daci;      // uygulanacak olan pals
#include <lcd.c>
#define port_b lcd_true
void main()

{
while(1)
{
lcd_init();
//if(input(pin_a0)==0){
Output_High(pin_c0);
fark=sonkonum-baskonum;
derece=(fark/aciara);
hsp=derece*aci;
daci=baskonum+hsp;
lcd_gotoxy(1,1);
printf(lcd_putc,"Fark=%ld",fark);
delay_ms(300);
//daci=1667;
lcd_gotoxy(1,2);
printf(lcd_putc,"%lf",derece);
delay_ms(300);
delay_us(daci); // Lojik-1 süresi 1,75 ms
Output_Low(pin_c0);
delay_us(per-daci);
lcd_gotoxy(1,3);

printf(lcd_putc,"\nhsp=%ld",daci);
delay_ms(500);
lcd_gotoxy(1,4);
//printf(lcd_putc,"\n=%ld",hsp);
delay_ms(1000);
}}