fethican
Üye
- Katılım
- 11 Ocak 2009
- Mesajlar
- 13
- Puanları
- 1
Merhaba arkadaşlar;
Ben motorun hızını manyetik sensör aracılığıyla ölçmek ve bunu lcd ye yazmak istiyorum.Bunun için aşağıdaki bi program yazdım.Burda b motorun birim zamanda dönmesini veriyor.az de manyetik sensörü ifade ediyor.c de zamanla artıyor.Ve birim zamanda sıfırlanıyor.Çeşitli değişiklikler yaparak denedim ama Lcd de görüntü alamıyorum hiç bir şekilde.Sanırım sorun lcd ile timer1 i doğru senkronize edememiş olmam.
Düzeltme yaparak sorunu cevaplayabilir misiniz?
teşekkürler!!!
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d) //Port yönlendirme komutları D portu için geçerli
#define az pin_a0
#define use_portb_ TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor
int i; //sıcaklık kontrolü için değişken atanıyor
int b;
int c;
#int_timer1
void timer1_kesme()
{
set_timer1(63016);
c++;
if(c==3000)
lcd_gotoxy(1,1);
printf(lcd_putc,"\%0.2d",b);
b=0;
c=0;
}
void main()
{
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_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);
set_tris_a(0x01);
output_b(0x00);
lcd_init();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(63036);
enable_interrupts(int_timer1);
Enable_interrupts(GLOBAL);
while(1)
{i=0;
b=60*i;
if(az==1)
{goto atla;}
i++;
atla:
delay_ms(50);
}
}
Ben motorun hızını manyetik sensör aracılığıyla ölçmek ve bunu lcd ye yazmak istiyorum.Bunun için aşağıdaki bi program yazdım.Burda b motorun birim zamanda dönmesini veriyor.az de manyetik sensörü ifade ediyor.c de zamanla artıyor.Ve birim zamanda sıfırlanıyor.Çeşitli değişiklikler yaparak denedim ama Lcd de görüntü alamıyorum hiç bir şekilde.Sanırım sorun lcd ile timer1 i doğru senkronize edememiş olmam.
Düzeltme yaparak sorunu cevaplayabilir misiniz?
teşekkürler!!!
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d) //Port yönlendirme komutları D portu için geçerli
#define az pin_a0
#define use_portb_ TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor
int i; //sıcaklık kontrolü için değişken atanıyor
int b;
int c;
#int_timer1
void timer1_kesme()
{
set_timer1(63016);
c++;
if(c==3000)
lcd_gotoxy(1,1);
printf(lcd_putc,"\%0.2d",b);
b=0;
c=0;
}
void main()
{
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_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);
set_tris_a(0x01);
output_b(0x00);
lcd_init();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(63036);
enable_interrupts(int_timer1);
Enable_interrupts(GLOBAL);
while(1)
{i=0;
b=60*i;
if(az==1)
{goto atla;}
i++;
atla:
delay_ms(50);
}
}