Merhaba arkadaşlar ,
Bir elektrikli araba projem için takometre yapmak istiyorum.16f628a kullanmaya karar verdim şemam ektedir.Şöyle bir sıkıntım var PORTB.0 kesmesini kuruyorum aynı zamanda da timer0 ı 1sn lik ayarlıyorum 1sn boyunca portb.0 dan gelenleri toplayıp 60 ile çarpıyorum sonra bunu teker katsayısı ile çarpacağım ama şimdilik devir bilgisini bulmaya çalışıyorum.12 volt dc 1500 rpm motorun ucuna mıknatıs bağladım denemeleri onunlar yapıyorum ama program eksik sayıyor bir anlık çalışmıyor gibi hızlı değişmiyor devir bilgisi bunun nedeni nedir acaba neyi yanlış yapıyorum yoksa komple mi yanlış yoldayım bir yardım edebilirmisiniz
Şimdiden Teşekkür Ederim...
DEFINE LCD_DREG PORTB 'LCD data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RSREG PORTA 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 4 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2 'LCD 2 sıra olarak çalışıyor.
sayac var word
sayi var word
rpm var word
Comm_Pin1 VAR PortA.3
Busy VAR BIT
HAM VAR WORD
ISI VAR WORD
TEMP VAR word
Float VAR WORD
ON INTERRUPT GoTo KESME 'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%11000101 'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10110000 'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7
TRISA=0
TRISB=%00000001
clear
pause 200
Basla:
'gosub sensor_oku
' gosub gonder
Lcdout $FE,$80,"AREL"
Lcdout $FE,$C0," UNIV."
Lcdout $FE,$8A," KM/H"
Lcdout $FE,$C7,"Pil:"
Lcdout $FE,$CB,DEC ISI,",",Dec FLoat,"C"
goto basla
;*******************************************************************************
Sensor_Oku: ;/*****************************************************
OWOUT Comm_Pin1, 1, [$CC, $44] ;***********************************
Bekle1: ;******************************************************
OWIN Comm_Pin1, 4, [Busy] ;***********************************
IF Busy = 0 THEN Bekle1 ;***********************************
OWOUT Comm_Pin1, 1, [$CC, $BE] ;***********************************
OWIN Comm_Pin1, 2, [HAM.Lowbyte, HAM.Highbyte] ;*****************
GOSUB Hesapla1 ;***********************************
RETURN ;******************************************************
Hesapla1: ;******************************************************
ISI=HAM*10/16 ;******************************************************
FLOAT = ISI//10 ;******************************************************
ISI=ISI/10 ;******************************************************
RETURN ;******************************************************
;*******************************************************************************
DISABLE ;******************************************************
KESME: ;******************************************************
if INTCON.1=1 then ;******************************************************
rpm=rpm+1 ;******************************************************
INTCON.1=0 ;******************************************************
endif ;******************************************************
if INTCON.2=1then ;******************************************************
sayac=sayac+1 ;******************************************************
if sayac=61 then ;******************************************************
;******************************************************
sayac=0 ;******************************************************
sayi=rpm*60 ;******************************************************
Lcdout $FE,$87,dec sayi
rpm=0 ;******************************************************
endif ;******************************************************
endif ;******************************************************
TMR0=0
INTCON.2=0 ;******************************************************
;******************************************************
resume ;******************************************************
;*******************************************************************************
end
İşlemci bilgilerin tanımlı değil derseniz programda, 64 bit pc de sıkıntı olduğundan programlayıcıdan seçiyorum sigorta ayarlarını dahili osilatör kullanıyorum.
(https://s31.postimg.cc/8piuowd8n/Ads_z.png) (https://postimg.cc/image/8piuowd8n/)
Hi,
because they do not use the "Count" command.
CMCON=7
RPM var Word
Ini:
COUNT portb.0,1000,RPM
RPM=RPM*60
LCDOUT $fe,1,"Engine running: ", DEC RPM, " rpm"
GOTO Ini:
END