Proton 3.7.3.1 ve LoadBit ?

Başlatan mustafa_cmbz, 13 Kasım 2019, 03:45:54

mustafa_cmbz

Alıntı YapDevice 16F628A
 Xtal 20
 TRISA =0
 TRISB =0
 PORTA =0
 PORTB =0
 
 CMCON =7
 Declare All_Digital TRUE
 
 Declare Hserial_Baud  = 9600 ' Set baud rate to 9600
 Declare Hserial_RCSTA = %10010000 ' Enable continuous receive
 Declare Hserial_TXSTA = %00100000 ' Enable transmit and asynchronous mode       ' LCD İÇİN KULLANILACAK
 Declare Hserial_Clear = On ' Clear the buffer before receiving

 Declare LCD_DTPin PORTB.4  ' LCD Data Pin   
 Declare LCD_RSPin PORTB.0  ' LCD RS Pin
 Declare LCD_ENPin PORTB.3  ' LCD EN Pin
 Declare LCD_Lines 2        ' LCD Satır
 Declare LCD_Interface 4    ' LCD Data Pin Sayısı 4
 Cls
 DelayMS 100

 Symbol dTa   =PORTA.0

 Dim I As Byte
 Dim TaMrUt As Word
 Dim OnDaRuT As Byte
 Dim tAmIsI As Word
 Dim OnDaIsI As Byte
 Dim X As Byte
 Dim cOnTroL As Byte
 Dim SeC As Bit


 BaSLa:
 Cls
 DelayMS 10
 Print At 1,1,"ISI ="
 Print At 2,1,"NEM ="
 MaIn:
 GoSub SeNsOROkU
 Print At 1,7,Dec tAmIsI,",",Dec OnDaIsI," "
 Print At 2,7,Dec TaMrUt,",",Dec OnDaRuT," "
 DelayMS 100
 GoSub DATA_GONDER
 GoTo MaIn

 DATA_GONDER:
 DelayMS 100
 HSerOut [13,"NEM ",Dec TaMrUt,13,"ISI ",Dec tAmIsI,13]
 DelayMS 100
 Return

 SeNsOROkU:     
 Output dTa
 dTa =1
 DelayUS 5
 dTa =0
 DelayMS 5      '1-10 ms bekle
 dTa =1         'Data pinini High yap
 DelayUS 40      '40 us bekle
 Input dTa
 DelayUS 5
 While dTa =0 :Wend
 DelayUS 80
 If dTa =1 Then HaTa

 TaMrUt=0
 For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
 While dTa =0:Wend
 DelayUS 30
 If dTa =1 Then LoadBit TaMrUt,I,1
 While dTa =1:Wend
 Next
 
 tAmIsI=0
 For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
 While dTa=0:Wend
 DelayUS 30
 If dTa=1 Then LoadBit tAmIsI,I,1
 While dTa =1:Wend
 Next           

 cOnTroL=0
 For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
 While dTa =0:Wend
 DelayUS 30
 If dTa=1 Then LoadBit cOnTroL,I,1
 While dTa =1:Wend
 Next
 Output dTa
 dTa=0
 OnDaRuT=TaMrUt//10 :TaMrUt =TaMrUt /10
 OnDaIsI=tAmIsI//10 :tAmIsI =tAmIsI /10
 Return
 
 HaTa:
 SeC =0
 For X =0 To 50
 Toggle SeC
 If SeC =1 Then Print At 1,3,"SENSOR HATASI"
 If SeC =1 Then Print At 1,3,"             "
 DelayMS 200
 Next X
 GoTo BaSLa
 
 End




Normalde eski sürümde gayet güzel çalışan DHT22 nem okuma işlemi protonun yeni sürümünde "LoadBit" komutundan dolayı çalışmıyor..

Bunun sebebi ni bilen yada başına gelen varmı ?

İlk gözüme çarpan bu komut olduğu için silip denediğimde proteus uyarı vermiyor.

Maxim

protonda zaman içinde birçok değişiklik ve güncelleme yapılıyor
bunların bazıları microchip yani üretici kaynaklı bile olabiliyor
loadbit komutunun detaylarına pdf dosyasında baktınızmı belki birkaç ekleme-değişiklik yapılmıştır?

dnacikaya

#2
@mustafa_cmbz hocam ben proton 3.7.2.8 kullanıyorum. Aşağıdaki config satırlarını kodunuza eklemeden derledim herhangi bir hata vermedi protonda. Bu satırları ekleyip derledim yine hata yok. 3.7.2.8 kurup deneyin veya aşağıdaki satırı ekleyin çalışmanıza. Proteustan kaynaklanan bir hata da olabilir. MCLR on off devrenize göre seçiniz. Ayrıca proton manualde çok şeyin değiştiğini görüyorum. En basitinden kristal belirtmek için bile declare öneriyorlar: Declare Xtal = 20

Config FOSC_HS, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, BOREN_ON, LVP_ON, CPD_OFF, CP_OFF

Bir de manualde sayfa 36'da kod yerleşimi hakkında bilgiler var bu kurallara uyulması tavsiye ediliyor, main bile en sonda kendine yer bulmuş:

A Typical flat BASIC Program Layout
The compiler is very flexible, and will allow most types of constant, declaration, or variable to be placed
anywhere within the BASIC program. However, it may not produce the correct results, or an unexpected
syntax error may occur due to a variable being declared after it is supposed to be used.
The recommended layout for a flat BASIC program is shown below.
Device
'
Declares
'
'
Includes
'
'
Constants and Variables
'
GoTo Main ' Jump over the subroutines (if any)
'
Subroutines go here
'
'
Main:
Main Program code goes here


mustafa_cmbz

Bu değişiklikler alışkanlıklarınızı bozuyor epeydir eski sürümden gidiyordum

Geçenlerde oled merakım yüzünden güncel sürüm yükledim akşam Dht22 için kod paylaştılar yardımcı olmak istedim ama nanay.

İyi ki önceden farkettim Mevcuttaki projede sorun yaşayacaktım.

Bahsettiğiniz sürümü yükleyeceğim.