Devre bağlantı şeması:

Pic Basic Pro kodları:
TRISB=0
TRISD=%00001111
'-------------------------------------------------
'@ DEVICE pic16F877
'@ DEVICE pic16F877, WDT_on
'@ DEVICE pic16F877, PWRT_ON
'@ DEVICE pic16F877, PROTECT_OFF
'@ DEVICE pic16F877, XT_OSC
'-------------------------------------------------
'----------LCD DEFINE komutları-----------
DEFINE LCD_DREG PORTB 'data bacakları hangi Porta bağlı?
DEFINE LCD_DBIT 4 'data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG PORTB 'Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT 3 'Enable Bacağı Hangi bite bağlı?
DEFINE LCD RWREG PORTB 'R/W Bacağı Hangi Porta bağlı?
DEFINE LCD_RWBIT 2 'R/W Bacağı Hangi bite bağlı?
DEFINE LCD_RSREG PORTB 'RS Bacağı Hangi Porta bağlı?
DEFINE LCD_RSBIT 1 'RS bacağı Hangi Bite bağlı?
DEFINE LCD_BITS 4 '4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES 2 'Kaç sıra yazabiliyor?
LOW PORTB.2
'değişken tanımlamaları--------------------------------
rastgele VAR WORD
L VAR BYTE
K VAR BYTE
tus VAR BYTE
LCDOUT $FE,1
PAUSE 200
site_adi: 'site ismi
LCDOUT $FE,1,"elektrikdersimiz"
LCDOUT $FE,$C0,".org"
PAUSE 500
BAS: 'hangi tuşa basılacağını belirtme
LCDOUT $FE,1,"zar atmak icin"
LCDOUT $FE,$C0,"# TUSUNA BAS"
PAUSE 1
tara: '# tuşuna basılıp basılmadığını kontrol etme
PORTD=%10000000
IF PORTD.2 THEN tus=13
IF tus<>13 THEN
tekrar: 'rastgele sayı üreterek üretilen sayının 1. ve 2.
'rakamlarını K ve L değişkenlerine atama
RANDOM rastgele
K=rastgele DIG 1
L=rastgele DIG 2
IF K<1 b="">OR 1>L<1 b="">THEN 1>TEKRAR
IF K>6 OR L>6 THEN TEKRAR
PAUSE 1
IF tus=13 THEN devam
GOTO tara
ENDIF
devam: 'sayıların yazı karşılıklarına yönlendirilmesi
IF K=1 AND L=1 THEN HEP_YEK
IF K=1 AND L=2 THEN DU_YEK
IF K=1 AND L=3 THEN SE_YEK
IF K=1 AND L=4 THEN CAR_YEK
IF K=1 AND L=5 THEN PENC_YEK
IF K=1 AND L=6 THEN SES_YEK
IF K=2 AND L=1 THEN DU_YEK
IF K=2 AND L=2 THEN DU_BARA
IF K=2 AND L=3 THEN SE_DU
IF K=2 AND L=4 THEN CAR_DU
IF K=2 AND L=5 THEN PENC_DU
IF K=2 AND L=6 THEN SES_DU
IF K=3 AND L=1 THEN SE_YEK
IF K=3 AND L=2 THEN SE_DU
IF K=3 AND L=3 THEN SE_SE
IF K=3 AND L=4 THEN CAR_SE
IF K=3 AND L=5 THEN PENC_SE
IF K=4 AND L=1 THEN CAR_YEK
IF K=4 AND L=2 THEN CAR_DU
IF K=4 AND L=3 THEN CAR_SE
IF K=4 AND L=4 THEN DORTCAR
IF K=4 AND L=5 THEN PENC_CAR
IF K=4 AND L=6 THEN SES_CAR
IF K=5 AND L=1 THEN PENC_YEK
IF K=5 AND L=2 THEN PENC_DU
IF K=5 AND L=3 THEN PENC_SE
IF K=5 AND L=4 THEN PENC_CAR
IF K=5 AND L=5 THEN DUBES
IF K=5 AND L=6 THEN SES_BES
IF K=6 AND L=1 THEN SES_YEK
IF K=6 AND L=2 THEN SES_DU
IF K=6 AND L=3 THEN SES_SE
IF K=6 AND L=4 THEN SES_CAR
IF K=6 AND L=5 THEN SES_BES
IF K=6 AND L=6 THEN DUSES
'sayıların yazı karşılıklarının LCD de gösterilmesi
HEP_YEK:
LCDOUT $FE,1,"HEP YEK"
GOTO donus
DU_YEK:
LCDOUT $FE,1,"DU YEK"
GOTO donus
SE_YEK:
LCDOUT $FE,1,"SE YEK"
GOTO donus
CAR_YEK:
LCDOUT $FE,1,"CAR YEK"
GOTO donus
PENC_YEK:
LCDOUT $FE,1,"PENC YEK"
GOTO donus
SES_YEK:
LCDOUT $FE,1,"SES YEK"
GOTO donus
DU_BARA:
LCDOUT $FE,1,"DU BARA"
GOTO donus
SE_DU:
LCDOUT $FE,1,"SE DU"
GOTO donus
CAR_DU:
LCDOUT $FE,1,"CAR DU"
GOTO donus
PENC_DU:
LCDOUT $FE,1,"PENC DU"
GOTO donus
SES_DU:
LCDOUT $FE,1,"SES DU"
GOTO donus
SE_SE:
LCDOUT $FE,1,"DUSSE "
GOTO donus
CAR_SE:
LCDOUT $FE,1,"CAR SE"
GOTO donus
PENC_SE:
LCDOUT $FE,1,"PENC SE"
GOTO donus
SES_SE:
LCDOUT $FE,1,"SES SE"
GOTO donus
DORTCAR:
LCDOUT $FE,1,"DORTCAR"
GOTO donus
PENC_CAR:
LCDOUT $FE,1,"PENC CAR"
GOTO donus
SES_CAR:
LCDOUT $FE,1,"SES CAR"
GOTO donus
DUBES:
LCDOUT $FE,1,"DUBES"
GOTO donus
SES_BES:
LCDOUT $FE,1,"SES BES"
GOTO donus
DUSES:
LCDOUT $FE,1,"DUSES"
GOTO donus
donus: 'zar sayı değerlerinin LCD de gösterilmesi
LCDOUT $FE,$C0,#L," - "
LCDOUT $FE,$C4,#K
PAUSE 30
tus=0
GOTO tara
Dosyaları indirmek için tıklayınız...
0 Yorumlar