Sercan sözer
Üye
- Katılım
- 14 Nis 2018
- Mesajlar
- 8
- Puanları
- 1
- Yaş
- 27
arkadaşlar öncelikle merhaba elimde 18f45k22 pici var ve bu picte timer0 ı kullanmam için gereken kodları internetten aradığım ve derlediğimde microC compailerı hiç bir türü kabul etmiyor. fakat aynı uygulamayı 16f877 ile çok kolay bir şekilde çalıştırıyorum benden istenilen 18f45k22 ile yapmam sadece bu picte timer0 uyandırıp saniyesi kullanmam gerek koduma ekleyip ödevi bitireceğim yardım ederseniz çok teşekkür ederim.tüm yorumlar benim için değerli şimdiden teşekkürler.bu arada rpm ölçer yapamak isteyenlere aşşağıya kodunu bırakıyorum herkese iyi çalışmalar.
Kod:
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
//lcd Bağlantıların konfigürasyonunu bitiriyorum
int artisB=0,kanat=1,deger=0; //Düğmelerim için 3 tamsayı değişkenini bildiririm
float adim=0,rpm; //Darbeler ve devir sayılarını ondalıklarla ölçmek için değişken tip değişkenlerimi beyan ederim
char ceviri[8],kanat1[7]; //Tamsayıya çevirmek ve metin dizgilerine geçmek
void main() {
PORTB.RB6=0;
TRISB.RB6=1;
PORTB.RB7=0;
TRISB.RB7=1;
LCD_INIT();
LCD_CMD(_LCD_CLEAR);
LCD_CMD(_LCD_CURSOR_OFF);
while(1){
if(deger == 0){
IntToStr(kanat,kanat1);
LCD_out(1,1,"secim yapiniz");
LCD_out(2,1,"kanat =");
LCD_OUT(2,9,kanat1);
if(PORTB.RB7 == 1){ //Bu düğmeye basılırsa, değer 1 olarak değişir ve başka bir işleve geçer
deger = 1;
LCD_CMD(_LCD_CLEAR);
}
if(PORTB.RB6 == 1){
artisB=1;
}
if(artisB == 1 && PORTB.RB6 == 0){ // b portunda artış sağlanırsa pervanedeki kanat sayısında artış sağlanır.
artisB=0;
kanat++;
if(kanat>5){ //kanat sayısının sınırının girildiği if döngüsü
kanat=1;
}
}
}else{
TMR0=0;
delay_ms(500);
adim=TMR0;
rpm=(adim*60)*2/kanat; //Motorun dönüşünü Helis sayısına bölünerek TMR0 değerini RPM'ye dönüştürülüyor.
FloatToStr(rpm,ceviri);
LCD_CMD(_LCD_CLEAR);
LCD_OUT(1,1,"Sercan Sozer");
LCD_OUT(2,1,"RPM =");
LCD_OUT(2,9,ceviri);
}
}
}
Moderatör tarafında düzenlendi: