Elektronik ve Teknoloji Merkezi Elektrotekno.com
Elektronik ve Teknoloji Merkezi




Click here to go to the original topic

Elektrotekno.com Ana Sayfa Microchip Pic Serisi
Yazar Mesaj
melih
Tarih: 26.11.2007, 19:00 Mesaj konusu: 16F877 ile LCD zar pbp problemi

merhaba arkadaşlar pbp da 16f877 ile lcd li zar projesi üzerinde çalışıyorum.kodu random komutu kullanarak yazdım ancak butona 6 defa bastığımda lcd de gördüğüm ilk değeri tekrar görüyorum.Butona her bastığımda sürekli farklı bir değer göstermesi için ne yapmalıyım???

trısb=1
trısd=0
define osc 4
define lcd_dreg portd
define lcd_dbıt 4
define lcd_rsreg porte
define lcd_rsbıt 0
define lcd_ereg porte
define lcd_ebıt 1

portb=1
portd=0
sayı var byte
sayı1 var byte
adcon1 = 7
low porte.2


pause 100
lcdout $fe, $80,"zar degerı "

buton:
ıf portb.0=0 then goto basla
goto buton

basla:
bas1:
random sayı
sayı= sayı & %00000111
ıf sayı=0 or sayı=7 then goto bas1
pause 100
lcdout $fe,$80,"zar1 = ",#sayı
bas2:
random sayı1

sayı1= sayı1 & %00000111
ıf sayı1=0 or sayı1=7 or sayı= sayı1 then goto bas2
lcdout $fe,$c0,"zar2 = " ,dec sayı1
pause 500

goto buton
end
ta2mc
Tarih: 26.11.2007, 19:15 Mesaj konusu:

Random komutu ile kullanacağınız değişkenin BYTE değil, WORD olarak tanımlanması gerekiyor.

Programın tamamını incelemedim. Ancak değiştirdiğiniz taktirde sanırım (umarım) çalışacaktır.

Kolay gelsin.
ete
Tarih: 26.11.2007, 21:37 Mesaj konusu:

random komutu word tipi değişkenle çalışır ve 0-65535 arası rastgele sayı üretir. istediğin aralıkta saıyı üretmek için aşağıdaki satırları kullan.

sayi var word
zar var sayi.byte0

basla:

random sayi
if zar=0 or zar>6 then basla

lcdout $fe,2,"zar=", dec zar
pause 200
goto basla

ete
ta2mc
Tarih: 27.11.2007, 00:20 Mesaj konusu:

"zar var sayi.byte0 " yerine;

"zar = sayi DIG 0" tanımlamasının kullanılması daha uygun olur.

(sayi var word şeklinde önceden tanımlanmak şartıyla)


Zira byte olarak tanımlanan değişken 0-255 arası değer alacak ve "if zar=0 or zar>6 then.." şartını sağlayan değeri bulması çok uzun zaman alabilecektir. Oysa sıfırıncı digit alınırsa, kritere uyan değere rastlama ihtimali misli misli yüksek olacaktır. (0-9 arası)

Veya, daha da kolayı; en soldaki (4.) digit dikkate alındığı taktirde zaten 0-6 arası bir sayı olacağından, altıdan büyük olup-olmadığının kontrolüne de gerek kalmayacak, dolayısı ile sıfırın haricindeki tüm değerler, şartı sağlamış olacaktır.
melih
Tarih: 27.11.2007, 17:43 Mesaj konusu:

merhaba projeyi tamamladım.ekranda 2 zar değerini de görebilmek için aynı komutu tekraladım ve ekrana yazdım.sayı değerleri hep çift geliyordu.(1-1,5-5,4-4)bunu engelemek içinde if zar2=0 or zar2>6 or zar1=zar2 then bas2 ekledim şimdi program isteğim gibi çalışıyor.yardımlarınızdan dolayı teşekkürler.
trısb=1
trısd=0
define osc 4
define lcd_dreg portd
define lcd_dbıt 4
define lcd_rsreg porte
define lcd_rsbıt 0
define lcd_ereg porte
define lcd_ebıt 1

portb=1
portd=0
sayı1 var word
sayı2 var word
zar1 var sayı1.byte0
zar2 var sayı2.byte0
adcon1 = 7
low porte.2
pause 100
lcdout $fe, $80,"zar degerı "
buton:
ıf portb.0=0 then goto basla
goto buton
basla:
bas1:
random sayı1
if zar1=0 or zar1>6 then bas1
lcdout $fe,$80," zar1 = ", dec zar1
pause 200
bas2:
random sayı2
if zar2=0 or zar2>6 or zar1=zar2 then bas2
lcdout $fe,$c0," zar2 = ", dec zar2
pause 200
goto buton
end



ozgurbaba1
Tarih: 29.11.2007, 02:58 Mesaj konusu:

Ama bu seferde hiç çift gelmeyecek. Tavlada önemlidir çiftler :)
melih
Tarih: 29.11.2007, 12:26 Mesaj konusu:

Haklısın ozgurbaba1 şimdilik bu kadar yapabildim.Onun üzerinde de çalışmak lazım :)
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
1. sayfa (Toplam 1 sayfa)

16F877 ile LCD zar pbp problemi

Gizlilik Politikası

PLC programming