pif16f84a int_timer ;1 sn elde ermek

Başlatan taytis, 07 Mayıs 2007, 16:29:17

taytis

Arkadaşlar selam pic16f84a ile bir zamanlayacı devresi yapıcam fakat hiçbi şekilde 1 sn elde edemedir kesmeleri kullandım olmadı elinizde örnek varsa 4Mh bir kristalle nasıl elde edebilirim ,yardımcı olursanız sevinirim.

tnen

Selamlar aşağıdaki kodu bir incele şu anda bunu deneyemedim.Sebebi ne proteus nede picbasic yuklu bu pc de (evde değilimde :lol: ) ama burada onemli olan option reg ve tickint interrupt alt programı bundan yararlamnabilirsin. Birde google da "pic16f84 ile saat projesi" şeklinde aratmanı oneririm.

DEVICE 16F84A

TrisA=0
TrisB=192

Dim Tick as Byte
Dim Saat as Byte
Dim Dakika as Byte
Dim Saniye as Byte
Dim i as Byte
Dim k as Byte
Dim l as Byte
Dim s as Byte

Dim a as Byte
Dim b as Byte
Dim c as Byte
Dim d as Byte
Dim e as Byte
Dim f as Byte

Saat=0:Dakika=0:Saniye=0:k=22
-------------------------------------------------------------------------------
OPTION_REG = $55
On Interrupt Goto tickint
PORTB=192
-------------------------------------------------------------------------------
BAS:
If s=1 Then Inc l
If l=40 Then l=0 : k=22
-------------------------------------------------------------------------------
If PORTB.7 = 0 Then
a=0:b=0:c=0:d=0:e=0:f=0
Else
a=32:b=16:c=8:d=4:e=2:f=1
EndIf
If PORTB.6 = 0 Then
DEC k
If k = 0 Then k = 1
s = 0
Goto Dakikayi_Artir
Else s = 1
EndIf
-------------------------------------------------------------------------------
PORTB=0
PORTA=DIG Saniye, 0
PORTB=a
DELAYMS 2
PORTB=0
PORTA=DIG Saniye, 1
PORTB=b
DELAYMS 2
PORTB=0
PORTA=DIG Dakika, 0
PORTB=c
DELAYMS 2
PORTB=0
PORTA=DIG Dakika, 1
PORTB=d
DELAYMS 2
PORTB=0
PORTA=DIG Saat, 0
PORTB=e
DELAYMS 2
PORTB=0
PORTA=DIG Saat, 1
PORTB=f
DELAYMS 2
GOTO BAS
-------------------------------------------------------------------------------
Dakikayi_Artir:
Dakika = Dakika + 1
If Dakika >= 60 Then
Dakika = 0:Saat = Saat + 1
If Saat = 24 Then Saat = 0
Saniye = 0
Endif
Goto debounce
debounce:
For i = 1 to k
PORTB=0
PORTA=DIG Saniye, 0
PORTB=a
DELAYMS 2
PORTB=0
PORTA=DIG Saniye, 1
PORTB=b
DELAYMS 2
PORTB=0
PORTA=DIG Dakika, 0
PORTB=c
DELAYMS 2
PORTB=0
PORTA=DIG Dakika, 1
PORTB=d
DELAYMS 2
PORTB=0
PORTA=DIG Saat, 0
PORTB=e
DELAYMS 2
PORTB=0
PORTA=DIG Saat, 1
PORTB=f
DELAYMS 2
Next i
Goto BAS
-------------------------------------------------------------------------------
Disable
TickInt:
Tick = Tick + 1
If Tick < 61 Then tiCik
Tick = 0
Saniye = Saniye + 1
If Saniye >= 60 Then
Saniye = 0
Dakika = Dakika + 1
If Dakika >= 60 Then
Dakika = 0
Saat = Saat + 1
If Saat >= 24 Then
Saat = 0
Endif
Endif
Endif
-------------------------------------------------------------------------------
tiCik: INTCON.2 = 0
If s = 0 Then Saniye = 0
Resume

POWER

Arkadaşım, kesme kullanılarak yazılmış saat proğramı yüklüyorum.Bu proğramı incele,kesme nasıl oluşturulmuş sana yardımcı olacaktır.

http://rapidshare.com/files/30021468/POWER.rar.html
TB6BKG