Programı anlatabilir misiniz

Başlatan canemektas, 03 Haziran 2011, 14:36:24

canemektas

Hatalı kısmı düzelttim afedersiniz. Program aşağıdadır...

ferit06

#1
program proton un derleme sonunda asm olarak verdiği  dosya . Bu nedenle bu programın açıklaması için asm bölümüne yazmanız daha iyi olur.

Yada .bas uzantılı dosyayı buraya koyun yorum yapılabilsin...

canemektas

Özür dilerim konuyu yanlış yere açtıysam silip değiştirebilirim yerini :S Afedersiniz...
Device 16F877A
XTAL=4
TRISB=255
TRISD=0
TRISC.6=0
PORTD=0
PORTC=0
Symbol Kuanta = 5000.0/10240.0
TRISA = %00000001
ADCON1= %10000010
Dim HAM As Word
Dim TEMP As Word
Dim ISI As Float
Dim LM35 As Word

basla:

If PORTB.7=1 Then GoTo gaz

If PORTB.5=1 Then GoTo duman

If PORTB.3=1 Then GoTo su

LM35 = ADIn 0
ISI = LM35*Kuanta

If ISI > 50 Then GoTo sicaklik

PORTC.6=0
GoTo basla
gaz:

Toggle PORTC.6
DelayMS 500
GoTo basla

duman:
Toggle PORTC.6
DelayMS 750
GoTo basla

su:
Toggle PORTC.6
DelayMS 300
GoTo basla

sicaklik:
PORTC.6=1
DelayMS 1500
PORTC.6=0
DelayMS 300
GoTo basla
     

ferit06

#3

açıklamalar aşağıdaki gibi;

Device 16F877A
Xtal=4
TRISB=255         ' B Portu tamammı giriş
TRISD=0           ' D Port Tamamı çıkış
TRISC.6=0         ' PortC 7. eleman çıkış  diğerleri ?
PORTD=0           ' port D çıkışı  sıfırlanıyor.
PORTC=0           ' port C çıkışı  sıfırlanıyor.  bu durumda PORTC çıkış oluyor.
Symbol Kuanta = 5000.0/10240.0      ' kuanta aldlı bir değişkene atama yapılıyor
TRISA = %00000001        'A portnun 1. elemanı giriş dğerleri çıkış olarak tanımlanıyor
ADCON1= %10000010        ' ADC  ayarları ile ilgili bir atama ayrıntı için datashets incele

' değişken tanımlamaları
Dim HAM As Word
Dim TEMP As Word
Dim ISI As Float
Dim LM35 As Word

basla:           ' programın başlangıç noktası

If PORTB.7=1 Then GoTo gaz          ' PortB nin 8. elemanı hihg ise gaz isimli etikete gidecek

If PORTB.5=1 Then GoTo duman        ' yukarıdaki gibi

If PORTB.3=1 Then GoTo su           ' yukarıdaki gibi

LM35 = ADIn 0                     ' LM 35 adlı değişlene ADC nin 0 nolu girişinden okuma yapılıyor
ISI = LM35*Kuanta                   ' ısı değeri LM35 isimlli değişkene yapılan okuma ve
                                   ' kuanta adlı sembol ile çarpılarak bulunuyor
If ISI > 50 Then GoTo sicaklik    ' ısi 50 dern büyükse sıcaklık etiketine gidiliyor

PORTC.6=0
GoTo basla
gaz:

Toggle PORTC.6      '   PORTc.6 high/low konum değiştiriliyor
DelayMS 500            ' 500 ms bekleniyor
GoTo basla              ' program başına gidiliyor

duman:
Toggle PORTC.6               '   PORTc.6 high/low konum değiştiriliyor
DelayMS 750
GoTo basla

su:
Toggle PORTC.6            '   PORTc.6 high/low konum değiştiriliyor
DelayMS 300
GoTo basla

sicaklik:
PORTC.6=1
DelayMS 1500
PORTC.6=0
DelayMS 300
GoTo basla



Ama bu programda epeyce eksik var.  İlk mesajınızda ısı, gaz...vs okunacak deiştiniz ama bu programda sadece sıcaklık LM35 ten okunuyor.
diğerlerinde ise okuma yerine sadece bekleme var. Herhalde onlara ait okumaları ilave edeceksiniz. Ve sonuçta da bunları bir şekilde bir yerde göstermeniz yada okunan değerlere göre bazı işlemler yapmanız gerekecek....


Proton veya Picbasic ile ilgili forumda ve internette epeyce kaynak var bunları okuyup ; programınızı tamamlayıp daha iyi bir şekilde sunumunuz yapabilirsiniz. daha fazlası için gayret sizden....

canemektas

Çok teşekkür ederim anlatımınız için. Yok değerler okunmayacak. Sensörler hazır kullanılacak kendi alarmı olanlar ötecek olmayanlarda da led ile ikaz verecek.

muhittin_kaplan

Symbol Kuanta = 5000.0/10240.0      ' kuanta aldlı bir değişkene atama yapılıyor
5000/1024 olmayacak mı bu  ayrıca symbol ile yapılan atama değişken değil sabittir.

canemektas

programın ilk satırında kullanılan xtal=4 komutundaki amaç nedir?
Şimdiden tşkler...

malpaslan1979

Kristalin kaç mhz olduğunu bildiriyorsunuz bu satır ile.

canemektas

tşk ederim. Bu program Pıcbasic ile yazılıp proton+ ile derlenmiş edilmiş sanırım doğru mu?

muhittin_kaplan

hayır. benzerlik göstermesi yanında PBP ile proton farklı dillerdir.