باسلام
بنده یه پیشنهاد ساده برای رفع خطا دارم
شما می تونید فرکانس کریستال رو با یه فرکانس متر اندازه بگیرید
وخطای بدست اومده رو در برنامه وارد کنی
ولی خوب دیگه یه فرکانس متر لازمه :wink:
ما این کار رو برای کریستال 32768 تو rtc استفاده میکردیم
و خطا رو کاهش می دادیم
این هم کمی کمک می کنه اون خازن های کنار کریستال رو هم اگه یکیش متغیر باشه می شه یکم مقدار فرکانس رو عوض کرد ولی خطای متغیر هم داریم که مثلا بستگی به دما داره اونو کاریش نمی شه کرد
etrmodern نوشته است:با سلام خدمت دوستان محترم
من نیاز به یک برنامه ساده ی ساعت با پیکره بندی confog clock=soft,gosub=sectic دارم.
یک برنامه پیدا کردم اما بعضی از جاهای برنامه رو سر در نمیارم :
کد:
$regfile = "M8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , _
Db7 = Portc.3 , Rs = Portc.4 , E = Portc.5
Cls
Cursor Off
Config Clock = Soft , Gosub = Sectic
Disable Interrupts
Config Portd = &B00000111
Dim S As Byte , Mi As Byte , H As Byte , Y As Word , Mo As Byte , D As Byte , _
Slc As Byte , Flag As Bit
Declare Sub First
Declare Sub Second
Slc = 0 : Y = 1385 : Mo = 1 : D = 1 : S = 0 : Mi = 0 : H = 12 : Flag = 0
'*************************************************************************
Scan:
If Pind.0 = 1 Then Incr Slc
If Slc = 5 Then Slc = 0
If Pind.2 = 1 Then
Flag = 0
Goto Waitls
End If
On Slc Goto Hour , Minute , Year , Month , Day
Goto Scan
'*************************************************************************
Waitls:
Enable Interrupts
Do
If Pind.0 = 1 Then
Flag = 1
Goto Scan
End If
Loop
'*************************************************************************
Sectic:
If Flag = 0 Then Gosub Show
Incr S
If S > 59 Then
S = 0
Incr Mi
Locate 1 , 14
Lcd " "
If Mi > 59 Then
Mi = 0
Incr H
If H > 23 Then
H = 1
Incr D
End If
End If
End If
If Mo < 7 Then Call First
If Mo => 7 Then Call Second
Return
'*************************************************************************
Show:
Cursor Off
Cls
Lcd "Date " ; Y ; "/" ; Mo ; "/" ; D
Lowerline
Lcd "Time " ; H ; ":" ; Mi ; ":" ; S
Return
End 'end program
'=========================================================================
'=========================================================================
Hour:
If Pind.1 = 1 Then Incr H
If H => 24 Then H = 0
Lcd "Hour: " ; H
Waitms 400
Cls
Goto Scan
'-------------------------------------------------------------------------
Minute:
If Pind.1 = 1 Then Incr Mi
If H => 60 Then Mi = 0
Lcd "Minute: " ; Mi
Waitms 400
Cls
Goto Scan
'-------------------------------------------------------------------------
Year:
If Pind.1 = 1 Then Incr Y
If Y = 1400 Then Y = 1385
Lcd "Year: " ; Y
Waitms 400
Cls
Goto Scan
'-------------------------------------------------------------------------
Month:
If Pind.1 = 1 Then Incr Mo
If Mo = 13 Then Mo = 1
Lcd "Mount: " ; Mo
Waitms 400
Cls
Goto Scan
'-------------------------------------------------------------------------
Day:
If Pind.1 = 1 Then Incr D
If D = 32 Then D = 1
Lcd "Day: " ; D
Waitms 400
Cls
Goto Scan
'_________________________________________________________________________
Sub First:
If D > 31 Then
D = 1
Incr Mo
End If
End Sub First
Sub Second:
If D > 30 Then
D = 1
Incr Mo
If Mo > 12 Then
Mo = 1
Incr Y
End If
End If
End Sub Second
وقتی با بسکام شبیه سازیش می کنم همیشه تو زیر برنامه ی scan باقی می ماند!!
مثلاً با شروع برنامه نمی دونم چطور به برنامه sectic وارد می شود؟
پیشاپیش از راهنماییتون ممنونم
با سلام به دوستان
من این برنامه رو تو بیسکام 1.11.8.3. و 1.11.8.7 می خوام کامپایل کنم اما نمی ش و از خط برنامه که شامل Config Clock = Soft است خطای Unknown Interrupt Source[count <> 3] رو می گیره لطفا من رو راهنمای کنید
:( :cry:
سلام دوستان...(سال نو و 13 بدرتون مبارک)
من با بسکام 1.11.9.0 کامپایل کردم هیچ errori نداد
پس در نتیجه از بسکامتونه!
من لینک بسکام 1.11.9.0 رو میذارم اینجا هرکی خواست برداره...نوش جانتان
http://www.4shared.com/file/38673422/416...0.html?s=1
از etrmodern هم ممنون!
بای 8)