اطلاعیه

Collapse
No announcement yet.

راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

    با سلام خدمت دوستان ومهندسین عزیز
    بنده یک دزد گیر با میکرو m8ساختم که همه چیش درسته فقط متاسفانه وقتی هر کدوم از ورودیها تحریک میشه شروع به اژیر زدن میکنه و تا موقعی که با ریموت دزد گیر رو غیر فعال نکنم اژیر قطع نمیشه از دوستان میخواستم راهنماییم کنند که برنامرو چجوری تغییر بدم تا وقتی ورودی ها تحریک شدن اژیر به مدت 15دقیقه بزنه و مجددا بره رو حالت اماده به کار و اگه این 15 دقیقه رو بشه با دیپ سوییچ به دوتایم مختلف تبدیل کرد عالی میشه مثلا وقتی دیپ سوییچ وصل بود 15 دقیقه بزنه و وقتی قطع بود 5 دقیقه بزنه
    این هم برنامه ای که نوشتم
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Portb = Input
    Config Portd = Output
    Config Debounce = 30
    Do
    Debounce Pinb.0 , 1 , Roshan , Sub
    Debounce Pinb.1 , 1 , Khamosh , Sub
    Debounce Pinb.2 , 1 , Zi , Sub
    Debounce Pinb.2 , 0 , Zia , Sub
    Debounce Pinb.3 , 1 , Zii , Sub
    Debounce Pinb.3 , 0 , Ziia , Sub
    Debounce Pinb.4 , 1 , Zix , Sub
    Debounce Pinb.4 , 0 , Zixa , Sub
    Debounce Pinb.5 , 1 , Zxx , Sub
    Debounce Pinb.5 , 0 , Zxxa , Sub
    Loop
    End
    Roshan:
    Reset Portd.0 پایه منفی اژِیر
    Set Portd.1 پایه مثبت اژیر
    Set Portd.2 ال ای دی
    Waitms 500
    Reset Portd.0
    Reset Portd.1
    Set Portd.2
    Return
    Khamosh:
    Reset Portd.0
    Set Portd.1
    Reset Portd.2
    Waitms 500
    Set Portd.0
    Reset Portd.1
    Return
    Zi:
    Set Portd.1 پایه مثبت اژیر
    Set Portd.3 پایه مثبت ال ای دی
    Return
    Zia:
    Reset Portd.3
    Return
    Zii:
    Set Portd.1 پایه مثبت اژیر
    Set Portd.4 پایه مثبتال ای دی
    Return
    Ziia:
    Reset Portd.4
    Return
    Zix:
    Set Portd.1 پایه مثبت اژیر
    Set Portd.5 پایه مثبتال ای دی
    Return
    Zixa:
    Reset Portd.5
    Return
    Zxx:
    Set Portd.1 پایه مثبت اژیر
    Set Portd.6 پایه مثبت ال ای دی
    Return
    Zxxa:
    Reset Portd.6
    Return
    این هم شماتیک:
    در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

    #2
    پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

    سلام
    من بسکام کار نکردم
    در کل میگم خودتون تست کنید
    از یه تایمر استفاده کنید
    مثلا ورودی وقتی تحریک شد متغییر بشماره (ثانیه ای) حالا یه ساعت درست می کنی میگی وقتی این متغییر دقیقه به 15 رسید تایمر رو صفر کنه و خروجی هارم صفر کنه
    (یکم گنگ قسمت تایمرشو توضیح دادم ولی در کل میشه فهمید منظورمو)
    واسه اون حالت 2 دقیقه و 15 دقیقه یکم فکر کن روش ببین میتونی چیکارش کنی
    موفق باشی
    Proudly @real_ahmadi
    #real_ahmadi

    واسه اسمت بجنگ

    دیدگاه


      #3
      پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

      نوشته اصلی توسط مهندس احمدی نمایش پست ها
      سلام
      من بسکام کار نکردم
      در کل میگم خودتون تست کنید
      از یه تایمر استفاده کنید
      مثلا ورودی وقتی تحریک شد متغییر بشماره (ثانیه ای) حالا یه ساعت درست می کنی میگی وقتی این متغییر دقیقه به 15 رسید تایمر رو صفر کنه و خروجی هارم صفر کنه
      (یکم گنگ قسمت تایمرشو توضیح دادم ولی در کل میشه فهمید منظورمو)
      واسه اون حالت 2 دقیقه و 15 دقیقه یکم فکر کن روش ببین میتونی چیکارش کنی
      موفق باشی
      مرسی مهندس جان
      دقیقا همینجوریه که گفتین ولی متاسفانه بلد نیستم چجوری برنامه تایمر رو بنویسم
      در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

      دیدگاه


        #4
        پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

        نوشته اصلی توسط AMIR987 نمایش پست ها
        دقیقا همینجوریه که گفتین ولی متاسفانه بلد نیستم چجوری برنامه تایمر رو بنویسم
        الان میخوای با تایمر بنویسی؟ اگر نه باید با حلقه for کار کنی
        یکیشو انتخاب کن

        دیدگاه


          #5
          پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

          نوشته اصلی توسط AMIR987 نمایش پست ها
          مرسی مهندس جان
          دقیقا همینجوریه که گفتین ولی متاسفانه بلد نیستم چجوری برنامه تایمر رو بنویسم
          خوب با دیلی بنویس هموون waitms اینجوری کار می کنه ولی دقیق نیست یا مثا نمیشه خاموشش کرد حتما بید 15 دقیقش تموم بشه بهترین راه همون تایمره
          توی هلپ نرم افزار همه چیزشو نوشته ببین و بنویس
          موفق باشی
          Proudly @real_ahmadi
          #real_ahmadi

          واسه اسمت بجنگ

          دیدگاه


            #6
            پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

            نوشته اصلی توسط kamy007 نمایش پست ها
            الان میخوای با تایمر بنویسی؟ اگر نه باید با حلقه for کار کنی
            یکیشو انتخاب کن
            مرسی دوست عزیز
            به نظر شما کدوم بهترو راحت تره ؟
            ممنون از راهنماییتون

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            نوشته اصلی توسط مهندس احمدی نمایش پست ها
            خوب با دیلی بنویس هموون waitms اینجوری کار می کنه ولی دقیق نیست یا مثا نمیشه خاموشش کرد حتما بید 15 دقیقش تموم بشه بهترین راه همون تایمره
            توی هلپ نرم افزار همه چیزشو نوشته ببین و بنویس
            موفق باشی
            مهندس جان با دیلی امتحان کردم دقتش زیاد مهم نیست بین 12 تا 16 دقیقه باشه ولی متا سفانه با دیلی تا اون تایم تموم نشه به برنامه بر نمیگرده ونمیشه زودتر از اون تایم خاموشش کرد و در فعال کردنش هم به مشکل برمیخورم چون اگر یکی از ورودی ها تحریک بشه باید 15 دقیقه منتظر بمونم تا به برنامه اصلی برگرده و بتونم با ریموت فعالش کنم
            سپاس
            در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

            دیدگاه


              #7
              پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

              $regfile = "m8def.dat"
              $crystal = 8000000
              $hwstack = 32 ' default use 32 for the hardware stack
              $swstack = 10 ' default use 10 for the SW stack
              $framesize = 40 ' default use 40 for the frame space

              Config Portb.1 = Output
              Dim Tim As Byte

              '***********************************************************************
              'config timer2 as timer
              'AVR Timert2 is 8bit so (crystal/Prescale)/timer2 => (800000/1024)/256
              Config Timer2 = Timer , Prescale = 1024
              '***********************************************************************

              '************************Interrup*************************************
              On Timer2 Timer2isr
              Enable Timer2
              Enable Interrupts
              '**********************************************************************


              Do

              If Tim > 100 Then
              Toggle Portb.1
              Tim = 0
              End If

              Loop


              Timer2isr:
              Incr Tim 'tim=tim+1
              Return

              این برنامه روش استفاده از تایمر 2 و اینتراپت اونو نشون میدن
              پورت b پین یک رو روشن خاموش میکنه
              بایت tim در روتین اینتراپت یکی یکی زیاد میشه
              یک کم باهاش کار کن دستت میاد

              '*****کانفیگ کردن تایمر دو**********
              . بصورت سخت افزاری کلاک کریستال تقسیم بر پریاسیکل شده و وارد تایمر میشود نایمر هم هشت بیتی است که میشود عدد255 بنابراین داریم کریستال تقسیم بر پریاسکل حاصل تقسیم بر 256 . عدد بدست امده مبشود زمان رخ دادن یک تینتراپ تایمر و اجرای روتین اینتراپت تایمر
              Config Timer2 = Timer , Prescale = 1024
              در اینجا تعریف میکنیم که اینتراپت تایمر در یک روتین که در اینجا با لیبل تایمر2 ای اس ار نام گذاری شده اجرا شود
              On Timer2 Timer2isr
              در این خط اعلام میکنیم که میکرو اینتراپتهای تعریف شده را اجرا کند
              Enable Interrupts
              تایمر دو روشن
              Enable Timer2
              *************************************************
              Do
              برنامه اصلی خودت را اینجا بنویس
              Loop
              *************************************************
              ******************************************
              Timer2isr:
              اینجا روتین اینتراپپ اجرا میشود برنامه اینتراپت را اینجا بنویس
              Return
              جدیدترین ویرایش توسط kamy007; ۱۶:۲۱ ۱۳۹۶/۰۶/۲۷.

              دیدگاه


                #8
                پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

                نوشته اصلی توسط AMIR987 نمایش پست ها
                مرسی دوست عزیز
                به نظر شما کدوم بهترو راحت تره ؟
                ممنون از راهنماییتون

                دلیل: ادغام دو پست برای جلوگیری از اسپم


                مهندس جان با دیلی امتحان کردم دقتش زیاد مهم نیست بین 12 تا 16 دقیقه باشه ولی متا سفانه با دیلی تا اون تایم تموم نشه به برنامه بر نمیگرده ونمیشه زودتر از اون تایم خاموشش کرد و در فعال کردنش هم به مشکل برمیخورم چون اگر یکی از ورودی ها تحریک بشه باید 15 دقیقه منتظر بمونم تا به برنامه اصلی برگرده و بتونم با ریموت فعالش کنم
                سپاس
                بله بنده هم گفتم خدمتتون اگر از دیلی استفاده کنی هیچ کاری نمیتونی انجام بدی تا مدت زمانش تموم بشه
                از تایمر استفاده کن
                پاینده باشید
                Proudly @real_ahmadi
                #real_ahmadi

                واسه اسمت بجنگ

                دیدگاه


                  #9
                  پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

                  نوشته اصلی توسط kamy007 نمایش پست ها
                  این برنامه روش استفاده از تایمر 2 و اینتراپت اونو نشون میدن
                  پورت b پین یک رو روشن خاموش میکنه
                  بایت tim در روتین اینتراپت یکی یکی زیاد میشه
                  یک کم باهاش کار کن دستت میاد

                  '*****کانفی
                  خیلی ممنون دوست عزیز شرمنده یک مدت درگیر کار بودم نمیتونستم به فروم سر بزنم.میشه یکمی در مورد برنامه انتراپت توضیح بدین؟ویه سوال دیگه اینکه میتونیم به تایمر شرط بزاریم که وقتیpinb.0 یک بود و اون چهار تا ورودی (pinb.2_3_4_5) یک شدن شروع به بکار کنه و اگه pinb.1 یک بود حتی اگه ورودی ها (pinb.2_3_4_5) تحریک شدن تایمر فعال نشه؟
                  جدیدترین ویرایش توسط AMIR987; ۲۲:۱۲ ۱۳۹۶/۰۷/۱۰.
                  در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

                  دیدگاه


                    #10
                    پاسخ : راهنمایی جهت تکمیل نمودن یک برنامه به زبان ****

                    نوشته اصلی توسط AMIR987 نمایش پست ها
                    خیلی ممنون دوست عزیز شرمنده یک مدت درگیر کار بودم نمیتونستم به فروم سر بزنم.میشه یکمی در مورد برنامه انتراپت توضیح بدین؟ویه سوال دیگه اینکه میتونیم به تایمر شرط بزاریم که وقتیpinb.0 یک بود و اون چهار تا ورودی (pinb.2_3_4_5) یک شدن شروع به بکار کنه و اگه pinb.1 یک بود حتی اگه ورودی ها (pinb.2_3_4_5) تحریک شدن تایمر فعال نشه؟
                    در ادامه توضیحات جناب احمدی باید بگم که تایمر کانتر ها اینطوریه که مثلا سی پی یو داره به کارهاش میرسه و خط به خط برنامه ها رو اجرا میکنه با تمام توان ُ در کنارش یکی هست که همش داره به یادش میندازه بیا فلان کار رو هم انجام بده.سی پی یو هم تا یادش اومده که باید فلان کار رو انجام بده -به کار فعلی خود استوپ میده و میره به اون کار میرسه و دوباره برمیگرده به ادامه کارش تا دوباره به یادش بندازن و برو و ... .
                    خوب اونی که داره به یاد سی پی یو میندازه بهش میگن تایمر کانتر. و اون استوپ زدن و رفتن به کاری که یادش افتاد و انجام دادن و بهش میگن وقفه (interrupt) چون به کار اصلیش وقفه میزنه و به یه کار دیگه میرسه و دوباره برمیگرده.
                    خوب برای اینکه میکرو بفهمه که همچین کارایی باید انجام بدی قبل همچیز باید با برنامه نویسی حالیش کنی که من میخام از تایمر استفاده کنم. و همچنین باید برای اون کاری که قرار سی پی یو وقتی یادش اومد بره اونو انجام بده - باید بدنه و کدهاشو یجا بنویسی که تو تنظیماتش میتونی پیدا کنی.

                    اینجا برای آشنایی بیشتر با تایمر کانتر ها کلیک کن

                    اینجا هم برای تنظیماتش تو بسکام کلیک کن


                    موفق باشید.
                    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
                    (پيش به سوي هدف)

                    دیدگاه

                    لطفا صبر کنید...
                    X