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
mame
Tarih: 13.12.2007, 05:45 Mesaj konusu: LCD SAAT pıcbasıc yardım

merhaba lcd ıle ds1302 entegresını kullanarak dahılı osılator ıle menulu saat yaptım fakat saat 30sn sonra falan sureklı resetlenıp basa donuyor.acaba kodlardamı hata var yoksa programlarken sıgortalardamı hata yapıyorum.
programlarken sıgortaların durumu ıntrc ı/o-wdte mclre-boren aktif.program wınpıc 800 (oradakı butun olasılıklar denendi.)kodlar asagıda.entegre 16f628.yardımlarınız ıcın tesekkurler.
trısa=%1100001 'porta tamamı çıkış
trısb=0 'portb tamamı çıkış
optıon_reg.7=0 'pull up dirençlerinin hepsi iptal
cmcon=7
'*****lcd_defıne tanımlamaları*****
defıne lcd_dreg portb 'lcd data bacakları portb'ye bağlı
defıne lcd_dbıt 0 'lcd data bacakları portb.4'den başlıyor
defıne lcd_ereg porta 'lcd enable bacağı portb'ye bağlı
defıne lcd_ebıt 3 'lcd enable pini portb.3 bağlı
defıne lcd_rsreg porta 'lcd rs pini portb'ye bağlı
defıne lcd_rsbıt 2 'lcd rs pini portb.2 bağlı
defıne lcd_bıts 4 'lcd 4 bit heberleşme yapıyor
defıne lcd_lınes 2 'lcd 2*16

'*****rtc ds1302 tanımlamaları*****
rtc_rst var portb.6
rtc_clk var portb.4
rtc_dta var portb.5
menu var porta.6
yukarı var porta.7
asagı var porta.0
'*****rtc ds1302 değişkenleri*****
sn var byte
dak var byte
saat var byte
gun var byte
ay var byte
yıl var byte
mem var byte
sayı var byte

onlar var byte
bırler var byte

a var byte 'karakter sayısı
c var byte 'karakter sayısı
d var byte 'karakter sayısı
e var byte 'karakter sayısı
saat=22
dak=34
gun=13
ay=12
yil=07



lcdout $fe,$0c
for a=0 to 35 'karakter sayısına onaltı eklenecek (49+16)
pause 150 'yazının kayma hızı
lcdout $fe,1
for c=0 to 19 'kayacak yazının karakter sayısının bir eksiği (50-1)
lookup c, ["muhammet alı kaymak"],d
lcdout $fe,143+c-a,d
next c
c=0
next a
a=0
low rtc_rst 'reset ve clock pinleri sıfırladık
low rtc_clk

gosub zaman_yaz



basla:




lcdout $fe,$0c
gosub zaman_oku
lcdout $fe,1,"saat : ",dec2 saat,":",dec2 dak,":",dec2 sn
lcdout $fe,$c0,"tarıh:",dec2 gun,"/",dec2 ay,"/","20",dec2 yıl


gosub gecikme
ıf menu=0 then ayar
goto basla
zaman_oku:

high rtc_rst
shiftout rtc_dta, rtc_clk, 0, [$bf]
shıftın rtc_dta, rtc_clk, 1, [sn, dak, saat,gun , ay, mem, yıl, mem] 'oku
low rtc_rst
mem=sn:gosub cevır:sn=sayı
mem=dak:gosub cevır:dak=sayı
mem=saat:gosub cevır:saat=sayı
mem=gun:gosub cevır:gun=sayı
mem=ay:gosub cevır:ay=sayı
mem=yıl:gosub cevır:yıl=sayı


':pause 100
return


zaman_yaz:
mem=sn:gosub terscevır:sn=sayı
mem=dak:gosub terscevır:dak=sayı
mem=saat:gosub terscevır:saat=sayı
mem=gun:gosub terscevır:gun=sayı
mem=ay:gosub terscevır:ay=sayı
mem=yıl:gosub terscevır:yıl=sayı


high rtc_rst
shıftout rtc_dta, rtc_clk, 0, [$8e, 0] 'yazmak için hazırla
low rtc_rst:pause 1
high rtc_rst
shıftout rtc_dta, rtc_clk, 0, [$be, sn, dak, saat,gun , ay, 0, yıl, 0] 'yaz
low rtc_rst
pause 10
return

cevır:
onlar=mem & %01110000
onlar=onlar>>4
bırler=mem & %00001111
sayı=onlar*10+bırler
return

terscevır:
onlar=mem dıg 1
onlar=onlar<<4
bırler=mem dıg 0
sayı=onlar+bırler
return
gecıkme:
pause 300
return

ayar:
ıf menu=0 then ayar

for a=0 to 16 'karakter sayısına onaltı eklenecek (49+16)
pause 150 'yazının kayma hızı
lcdout $fe,1
for c=0 to 15 'kayacak yazının karakter sayısının bir eksiği (50-1)
lookup c, [" menu "],d
lcdout $fe,143+c-a,d
next c
c=0
next a
a=0


z:
gosub ekran3
lcdout $fe,$c0,"<=zaman ayarla=> "
gosub gecıkme
ıf menu=0 then saatayar1
ıf asagı=0 then t
ıf yukarı=0 then cık
goto z
t:
gosub ekran3
lcdout $fe,$c0,"<=tarıh ayarla=> "
gosub gecıkme
ıf menu=0 then tarıh
ıf asagı=0 then cık
ıf yukarı=0 then z
goto t
cık:
gosub ekran3
lcdout $fe,$c0," <=cıkıs=> "
gosub gecıkme
ıf menu=0 then basla
ıf yukarı=0 then t
ıf asagı=0 then z
goto cık

saatayar1:
lcdout $fe,1
ıf menu=0 then saatayar1
gosub ekran0
saatayar:
gosub gecıkme
lcdout $fe, $c7, dec2 saat
lcdout $fe,$0e
lcdout $fe, $10

e=0

button menu, 0, 255, 255, e, 1,dakikaayar1
button yukari,0,255,255,e,1,saatiarttir
button asagı,0,255,255,e,1,saatiazalt
goto saatayar
saatiarttir:
ıf yukarı=0 then saat=saat+1
ıf saat=24 then saat=0
goto saatayar

saatiazalt:
ıf asagı=0 then saat=saat-1
ıf saat=255 then saat=23
goto saatayar

dakikaayar1:
ıf menu=0 then dakikaayar1
lcdout $fe,1
gosub ekran0

dakikaayar:
gosub gecıkme
lcdout $fe, $ca, dec2 dak
lcdout $fe,$0e
lcdout $fe, $10
e=0

button menu, 0, 255, 255, e, 1,zaman_b
button yukarı,0,255,255,e,1,dakarttir
button asagı,0,255,255,e,1,dakazalt
dakarttir:
ıf yukarı=0 then dak=dak+1
ıf dak=60 then dak=0

goto dakikaayar
dakazalt:
ıf asagı=0 then dak=dak-1
ıf dak=255 then dak=59

goto dakikaayar
zaman_b:
ıf menu=0 then zaman_b
gosub zaman_yaz

lcdout $fe,1," zaman ayarlandı"
gosub gecıkme
gosub gecıkme
gosub gecıkme
goto basla

tarıh:
ıf menu=0 then tarıh
lcdout $fe,1
gosub ekran1

tarıh_ayar1:
gosub gecıkme
lcdout $fe, $c6, dec2 gun
lcdout $fe,$0e
lcdout $fe, $10
e=0


button menu, 0, 255, 255, e, 1,ay_a
button yukari,0,255,255,e,1,gun_arttır
button asagı,0,255,255,e,1,gun_azalt

gun_arttır:
ıf yukarı=0 then gun=gun+1
ıf gun=32 then gun=1
goto tarıh_ayar1

gun_azalt:
ıf asagı=0 then gun=gun-1
ıf gun=0 then gun=31

goto tarıh_ayar1

ay_a:
ıf menu=0 then ay_a
lcdout $fe,1
gosub ekran1
ay_a1:
gosub gecıkme
lcdout $fe, $c9, dec2 ay
lcdout $fe,$0e
lcdout $fe, $10
e=0


button menu, 0, 255, 255, e, 1,yıl_a
button yukarı,0,255,255,e,1,ay_art
button asagı,0,255,255,e,1,ay_azal

ay_art:

ıf yukarı=0 then ay=ay+1
ıf ay=13 then ay=1
goto ay_a1

ay_azal:
ıf asagı=0 then ay=ay-1
ıf ay=0 then ay=12
goto ay_a1


yıl_a:
ıf menu=0 then yıl_a
lcdout $fe,1
gosub ekran1
yıl_a1:
gosub gecıkme
lcdout $fe, $ce, dec2 yıl
lcdout $fe,$0e
lcdout $fe, $10

e=0

button menu, 0, 255, 255, e, 1,zaman_b
button yukarı,0,255,255,e,1,yıl_art
button asagı,0,255,255,e,1,yıl_azal

yıl_art:
ıf yukarı=0 then yıl=yıl+1
ıf yıl=100 then ay=00
goto yıl_a1

yıl_azal:
ıf asagı=0 then yıl=yıl-1
ıf yıl=255 then yıl=99
goto yıl_a1
gecıkme2:
pause 150
return

ekran1:
lcdout " tarıh ayarla "
lcdout $fe,$c0,"tarıh:",dec2 gun,":",dec2 ay,":","20",dec2 yıl
return
ekran0:
lcdout " zaman ayarla "
lcdout $fe,$c0,"saat : ",dec2 saat,":",dec2 dak,":",dec2 sn
return
ekran3:
lcdout $fe,1, " menu "
return

end
elektron
Tarih: 13.12.2007, 12:33 Mesaj konusu:

merhaba mame;
wdt disable yap.
mame
Tarih: 14.12.2007, 02:36 Mesaj konusu:

elektron yazmış: merhaba mame;
wdt disable yap.
cevabın ıcın tesekkurler dedıgını yaptım sorun cozulmedı.devrede sorunum yok aynı devre calısan bır program var ortada dolasan antrakta hex olarak verılmıs.o programla devreyı sorunsuz calıstırıyorum.sanırım mclr ile ilgili sorunum var devre programlarken mclr i kapatıyorum.ama sanırım programdada ayarlamam gereken bıseyler var program ve ısıs dosyalarını yukluyorum.bırde bu bastakı @ıle yapılandevice tanımlamalarını pıc basıc pro tanımıyor illegal opcode hatası verıyot acaba nerde hata var.bunlar program basına yazana bılgı ıcınmı yoksa programda bı ayar yaparakmı bunları tanıtıyoruz.helpte konuyla ılgılı bılgı bulamadım.yapmak ısteyene baskı devrede ekledım.
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_off
@ DEVICE pic16F628A, PWRT_On
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_On
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
mame
Tarih: 30.12.2007, 06:46 Mesaj konusu:

hatamı buldum meger görmemisim pullup ları dısable yapacagıma enable yapmısım optionreg7=1 yapınca program normale döniyor ilgilenenlere tesekkürler.
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
1. sayfa (Toplam 1 sayfa)

LCD SAAT pıcbasıc yardım

Gizlilik Politikası

PLC programming