NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3115 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 5 از 5

موضوع: مشکل برنامه نویسی در بسکام

  1. #1
    عضو جدید
    تاریخ عضویت
    Apr 2014
    نوشته ها
    10
    تشکر
    10
    تشکر شده 0 بار در 0 پست

    Gadid مشکل برنامه نویسی در بسکام

    سلام بر دوستان
    یه برنامه ای تو بسکام می خواستم بنویسم که اگر یه ورودی 2ثانیه به 5ولت متصل شه یه پورت روشن شه و اگر 5 ثانیه شد پورت دوم و اگر 10 ثانیه شد پورت سوم روشن شه
    البته یه کارایی کردم ولی درست نشد و خطای کامپایل داد.
    اگه کسی میتونه کمک کنه


    $regfile = "M16DEF.DAT"
    $crystal = 1000000
    Config Porta = Input
    Config Portb = Output
    Dim G As Byte

    Man:
    Do
    While Porta.0 = 1
    G = 1
    Incr G
    Waitms 500

    If G = 4
    Then Goto Led1
    If G = 10
    Then Goto Led2
    If G =20
    Then Goto Led3

    Wend
    Loop



    Led1:

    Set Portb.0
    Waitms 500
    Reset Portb.0
    Waitms 500
    Set Portb.0
    Waitms 500
    Reset Portb.0
    Waitms 500
    Set Portb.0
    Waitms 500
    Reset Portb.0
    Waitms 500
    Goto Man

    Led2:
    Set Portb.1
    Waitms 500
    Reset Portb.1
    Waitms 500
    Set Portb.1
    Waitms 500
    Reset Portb.1
    Waitms 500
    Set Portb.1
    Waitms 500
    Reset Portb.1
    Waitms 500
    Goto Man

    Led3:
    Set Portb.2
    Waitms 500
    Reset Portb.2
    Waitms 500
    Set Portb.2
    Waitms 500
    Reset Portb.2
    Waitms 500
    Set Portb.2
    Waitms 500
    Reset Portb.2
    Waitms 500
    Goto Man

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام

    الان شما چطوری تشخیص میدید ک ورودی چند ثانیه به 5 ولت وصل شده؟
    برای این برنامه نیازه از تایمر استفاده بشه تا زمان اتصال به 5 ولت تشخیص داده بشه بعد ب توجه به زمان پورت مورد نظر فعال بشه
    *** اللّهم عجّل لولیک الفرج ***

  4. کاربران : 2 تشکر کرده اند از شما Doloop برای ارسال این پست سودمند:


  5. #3
    عضو جدید
    تاریخ عضویت
    Apr 2014
    نوشته ها
    10
    تشکر
    10
    تشکر شده 0 بار در 0 پست

    پیش فرض

    بله دقیقا من مشکلم همینجاست که دقیقا نمیدونم چجوری برنامه شمردن رو بنویسم از کانتر استفاده کنم یا تایمر؟

  6. #4
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    کانتر زیر مجموعه واحد تایمر هست
    مگا 16 دقیق یادم نیست ولی فکر کنم دوتا تایمر داره ( تایمر صفر و تایمر یک)

    نمونه برنامه برای راه انداختن تایمر تو خود Help بسکام هست تو نت هم سرچ کنی زیاده

    کد:
    ConfigTimer0=Counter, Edge = Rising
    
    Tcnt0 = 0
     
     Do
     Print Tcnt0
     LoopUntil Tcnt0 >= 10
     'when 10 pulses are count the loop is exited
     'or use the special variable TIMER0
     Timer0= 0
     
    
    ConfigTimer0=Timer, Prescale = 1
     
     'The TIMER is started now automaticly
     'You can STOP the timer with the following statement :
     StopTimer0
     
     'Now the timer is stopped
     'To START it again in the last configured mode, use :
     StartTimer0
     
     'Again you can access the value with the tcnt0 register
     Print Tcnt0
     'or
     PrintTimer0
    این یه نمونه راه اندازی تایمر هست البته من از تو نت قسمت دستورات تایمر رو براتون کپی کردم
    سرچ کنید خیلی راحت پیدا میکنید

    موفق باشید
    *** اللّهم عجّل لولیک الفرج ***

  7. تشکرها از این نوشته :


  8. #5
    عضو جدید
    تاریخ عضویت
    Apr 2014
    نوشته ها
    10
    تشکر
    10
    تشکر شده 0 بار در 0 پست

    پیش فرض

    کد:
    $regfile = "M16DEF.DAT"
    $crystal = 4000000
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    Config Porta = Input
    Config Portb = Output
    Dim San As Byte
    Config Timer1 = Timer , Prescale = 64
    Enable Interrupts
    Enable Timer1
    
    If Pinb.0 = 1 Then Start Timer1
    San = 0
    On Timer1 P
    
    Do
    Locate 1 , 1 : Lcd San
    Loop
    End
    P:
    Incr San
    
    
    If San > 10 Then : Toggle Portb.0 : San = 0 : End If
    If San < 11 Then : Toggle Portb.1 : San = 0 : End If
    
    Return
    دوستان این کد رو نوشتم اما عمل نمی کنه میشه کمک کنید مشکلش پیدا شه!

موضوعات مشابه

  1. برنامه نویسی فلاشر
    توسط رسول21 در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 10-03-2014, 22:41
  2. [درخواست] کمک در برنامه نویسی پروژه
    توسط ciscozagros در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 08-01-2014, 12:45
  3. کمک برای یه مشکل در برنامه نویسی
    توسط sky_man847 در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 13-09-2012, 01:16
  4. برنامه نویسی با iar
    توسط ali ali در انجمن مباحث کلی ARM
    پاسخ: 13
    آخرين نوشته: 06-02-2012, 03:12
  5. کمک در برنامه نویسی و سخت افزار
    توسط BaRdIa در انجمن AVR
    پاسخ: 6
    آخرين نوشته: 15-08-2010, 03:00

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •