ايران ويج

نسخه‌ی کامل: درخواست کمک برای گرفتن زمان واقعی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با سلام

دوستان عزیز من یک مداری ساختم که در اون با توجه به زمان مورد نظر یکسری دستوراتی انجام میده ، حالا من موندم اینجا که چرا این زمان مورد نظر اصلا درست عمل نمیکنه !!

درضمن از کریستال 32768 هم استفاده شده و هم از دستور تایمر 2
برنامه ای که من نوشتم قطعه اصلیش رو براتون میذارم

عاجزانه خواهش می کنم کمکم کنید
CONFOG TIMER2 = TIMER , ASYNC = ON , PRESCALE = 128
CONFIG PORTD = OUTPUT
ENABLE INTERRUPTS
ENABLE TIMER2
dim sec,min,hor as integer
sec=0
min=0
hor=0
ON TIMER2 NEX
DO

if hor=1 and min=30 then portc=10
if hor = 12 and min = 20 then portc= 26
.
.
.
.
.
LOOP
END
NEX:
incr sec
if sec=59 then
sec=0
incr min
end if
if min = 59 then
min=0
incr hor
end if
if hor = 24 then
hor=0
min=0
sec=0
end if
RETURN

خلاصه برنامه اینطور هست که بعد از هر وقفه یک ثانیه ای یک مقدار به متغیر Sec افزوده شده و بعد از 60 ثانیه یک مقدار به متغیر Min و بعد از 60 دقیقه هم یک مقدار یه متغیر Hor افزوده میشه
و در ساعات مختلف دستورات مختلفی رو در حوزه Do Loop انجام میده که این دستورات تقریبا 10 خط هستند

حالا مشکل من این هست که این ساعت هر یک ساعت حدود یک ربع عقب ، جلو میشه Sad
خواهش میکنم در این مورد کمکم کنید Heart
کریستالت رو چی ست کردی؟
اختلاف 15 دقیقه زیاده.
البته میتونی از $time استفاده کنی ولی فکر کنم چون وقفه داری استپ بشه و تتایم رو از دست بدی.
یه بار باهاش تست کن تو هلپ بیسکام ببینش.
برنامه داخل do loop رو بزار ببینیم چیه.
نقل قول: کریستالت رو چی ست کردی؟

دوست عزیز رشته من کامپیوتر هست و از این اصطلاحات زیاد بلد نیستم ، لطفا اگر مشکلی در این برنامه هست بهش اشاره کنید ، خواهشــــــا

نقل قول: البته میتونی از $time استفاده کنی ولی فکر کنم چون وقفه داری استپ بشه و تتایم رو از دست بدی.
یه بار باهاش تست کن تو هلپ بیسکام ببینش.

آخه اگه ازدستور Time$ استفاده کنم پس چور ساختار شرطی بذارم ؟
یعنی تو برنامه چطور بگم که فلان ساعت Portc=10 کن ؟
اول do loop اصلی رو بزار ببینیم چیه.
ببین اگه هلپو بخونی میبینی نوشته متغیرهای min_,_hor,_sec رو میتونی برای خوندن ثانیه دقیقه ساعت استفاده کنی.
بالای برنامت crystal$ رو چی نوشتی؟
نقل قول: بالای برنامت crystal$ رو چی نوشتی؟

8000000

از مگا 8 استفاده کردم
توی do loop چی نوشتی ؟
با کریتال 4مگ تست کن یا 1مگ.
به پایه های کریستال چیزی وصل کردی؟
به خاطر نویزی که در میکرو ایجاد میشه این عیب پیش میاد شما 2 تا خازن 15p به هر پایه کریستال 32768 لحیم کنید بعد سر مشترک خازن ها را هم به زمین مدارتون وصل کنید انشالله که درست میشه
نقل قول: توی do loop چی نوشتی ؟

ای بابا ! بالا نوشتم دیگه !

به عنوان مثال ، مثلا میخوام ساعت 12.30 پین C.3 رو یک کنه


نقل قول: به خاطر نویزی که در میکرو ایجاد میشه این عیب پیش میاد شما 2 تا خازن 15p به هر پایه کریستال 32768 لحیم کنید بعد سر مشترک خازن ها را هم به زمین مدارتون وصل کنید انشالله که درست میشه

منظورتون خازن 15پیکو فاراد هست ؟ از نوع عدسی هست ؟ به خاطر این میپرسم که مثبت منفی داره یا نداره
دستتون درد نکنه
سلام.

نقل قول: به خاطر نویزی که در میکرو ایجاد میشه این عیب پیش میاد شما 2 تا خازن 15p به هر پایه کریستال 32768 لحیم کنید بعد سر مشترک خازن ها را هم به زمین مدارتون وصل کنید انشالله که درست میشه
نقل قول: منظورتون خازن 15پیکو فاراد هست ؟ از نوع عدسی هست ؟ به خاطر این میپرسم که مثبت منفی داره یا نداره
دستتون درد نکنه

البته استفاده از خازن در دو سر كريستال به علت نويز پذيري نيست ...
در واقع اگر مدل مداري كريستال رو ببينيد ، به چند لايه ي سلفي و ... مدل شده كه قرار گرفتن اون دو خازن در دو سر كريستال باعث مي شه كه مدار كريستال كامل بشه و به كريستال درست ولتاژ اعمال بشه و ...
----------------
خازن هاي در حد پيكو فاراد الكتروليت نيستن و قطبيت ندارن ... ( عدسي )

موفق باشيد.
يا علي.
سلام دوست من
اصلا احتیاج به Timer نداری.
$regfile = "M32DEF.DAT"
$crystal = 8000000

Lcdrs Alias Pina.5 'LCD RS
Lcde Alias Pina.4 'LCD E
Lcdb4 Alias Pina.3 'LCD DB4
Lcdb5 Alias Pina.2 'LCD DB5
Lcdb6 Alias Pina.1 'LCD DB6
Lcdb7 Alias Pina.0 'LCD DB7

Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Lcdrs , E = Lcde , Db4 = Lcdb4 , Db5 = Lcdb5 , Db6 = Lcdb6 , Db7 = Lcdb7
Cursor Off
Cls
Config Portb = Input
Enable Interrupts
Dim Rooz As Integer , Mah As Byte , Sal As Byte
Dim I As Byte , Endm As Byte

Config Date = Ymd , Separator = /
Config Clock = Soft , Gosub = Sectic
sec = 57 : _min = 13 : _hour = 23

Do
If _hour = 0 And _min = 0 And _sec = 0 Then .....
Loop
'=============

Sectic:
Locate 1 , 1
Lcd Time$
Return
به همین سادگی باور کن
امیدوارم بدونی که کریستال رو باید به پایه های TOSC1 & TOSC2 قرار بدی
نقل قول: سلام دوست من
اصلا احتیاج به Timer نداری.
$regfile = "M32DEF.DAT"
$crystal = 8000000

Lcdrs Alias Pina.5 'LCD RS
Lcde Alias Pina.4 'LCD E
Lcdb4 Alias Pina.3 'LCD DB4
Lcdb5 Alias Pina.2 'LCD DB5
Lcdb6 Alias Pina.1 'LCD DB6
Lcdb7 Alias Pina.0 'LCD DB7

Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Lcdrs , E = Lcde , Db4 = Lcdb4 , Db5 = Lcdb5 , Db6 = Lcdb6 , Db7 = Lcdb7
Cursor Off
Cls
Config Portb = Input
Enable Interrupts
Dim Rooz As Integer , Mah As Byte , Sal As Byte
Dim I As Byte , Endm As Byte

Config Date = Ymd , Separator = /
Config Clock = Soft , Gosub = Sectic
sec = 57 : _min = 13 : _hour = 23

Do
If _hour = 0 And _min = 0 And _sec = 0 Then .....
Loop
'=============

Sectic:
Locate 1 , 1
Lcd Time$
Return
به همین سادگی باور کن

با سلام ،
اولندش آیسی همانطور که قبلا گفتم مگا 8 هست
دومندش حالا این مقادیر sec=57 , min=13 ,..... رو بعنوان مثال گفتید دیگه ؟ چون من میخوام از صفر شروع بشن(یعنی دقیقا از 12 شب)
سومندش تو مدار ال سی دی یا سون شگمنت نیست عزیز لطفا تمام دستورات مربوط به اونو پاک کن :)

------------------------------------
نقل قول: امیدوارم بدونی که کریستال رو باید به پایه های TOSC1 & TOSC2 قرار بدی
دیگه نه به اون شوری نه به این بی نکمی !! :)) اینو میدونم و وصل کردم دوست عزیز.
------------------------------------
نقل قول: خازن هاي در حد پيكو فاراد الكتروليت نيستن و قطبيت ندارن ... ( عدسي )
با لاسم خدمت شما
خوب حالا من چی کار کنم ؟ دوتا عدسی وصل کنم یا برنامه ای که دوستم گفت رو بزنم ؟
صفحه‌ها: 1 2