صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 20

موضوع: نحوه افزایش کانال میکرو از هشت خروجی به شانزده خروجی

  1. #1
    کاربر عادی hamed_avr آواتار ها
    تاریخ عضویت
    May 2014
    نوشته ها
    78
    تشکر
    15
    تشکر شده 25 بار در 20 پست

    نحوه افزایش کانال میکرو از هشت خروجی به شانزده خروجی

    عرض سلام و خسته نباشید خدمت دوستان عزیز
    من برنامه فلاشر رو با کمک شما و دوستان دیگه تونستم بنویسم با زبان بیسیک و از طریق جدول lookup
    حالا می خوام بدونم چه جوری باید پورت میکرو رو از هشت خروجی به شانزده خروجی افزایش بدم .
    منظورم از افزایش اینه که مثلا پورت D و پورت B رو به یک پورت شانزده بیتی تبدیل کنم
    ممنون میشم راهنماییم کنید

  2. #2
    مدیریت سایت LightIran آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    1,126
    تشکر
    225
    تشکر شده 1,454 بار در 643 پست
    شما میتونین در هر بار استفاده از دو lookup table استفاده کنین!یعنی برای پورت B از یکی و برای پورت D از یکی!

    البته یک راه دیگه هم هست که اونم استفاده از یه Integer هست. در زبان C میشه این رو راحت به دو بایت تقسیم کرد ولی برای بسکام میبایست به صورت زیر عمل کنید:
    دیتای خودتون رو فرض کنید 0x55AA باشه!
    شما بایت اول یعنی AA رو برای پورت B باید استفاده کنین و بایت دوم یعنی 55 رو برای پورت D
    خب برای اینکار به صورت زیر عمل کنید:
    برای پورت B:
    مقدار رو با 0x00FF باید AND کنید. بعد از اینکار بایت دوم صفر میشه یعنی میشه 0x00AA
    بعد شما این مقدار رو به پورت Bمی تونین بدین!
    برای پورت D:
    مقدار رو با 0xFF00 باید AND کنید. بعد از اینکار بایت اول صفر میشه یعنی 0x5500 میشه!
    حال مقدار رو به اندازه 8 واحد به سمت راست شیفت بدید.
    بعد از اینکار مقدار میشه 0x0055 که میشه راحت بدین به پورت D
    You can if you want!Trust Me
    تنها غیرممکن غیرممکن است پس تلاش کنید!

  3. #3
    کاربر عادی hamed_avr آواتار ها
    تاریخ عضویت
    May 2014
    نوشته ها
    78
    تشکر
    15
    تشکر شده 25 بار در 20 پست
    اگه از دو تا لوک اپ استفاده کنم چه جوری پورت بعدی رو منتظر نگه دارم ؟

  4. #4
    مدیریت سایت LightIran آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    1,126
    تشکر
    225
    تشکر شده 1,454 بار در 643 پست
    نقل قول نوشته اصلی توسط hamed_avr نمایش پست ها
    اگه از دو تا لوک اپ استفاده کنم چه جوری پورت بعدی رو منتظر نگه دارم ؟
    یعنی چی پورت بعدی رو منتظر نگه دارین؟یکم توضیح بدین!
    اولا که مقدار خروجی پورت تا اعمال مقدار بعدی تغییر نمیکنه و همون نشون داده میشه و دوما هم سرعت میکرو به اندازه کافی بالا هست که بتونه بدون هیچ گونه مشکلی هر دو پورت رو جاروب بکنه.
    برای برنامه مثل زیر استفاده کنین:

    کد:
    PortB=lookup(x,table1) PortD=lookup(y,table2)
    You can if you want!Trust Me
    تنها غیرممکن غیرممکن است پس تلاش کنید!

  5. #5
    کاربر عادی hamed_avr آواتار ها
    تاریخ عضویت
    May 2014
    نوشته ها
    78
    تشکر
    15
    تشکر شده 25 بار در 20 پست
    مثلا در کلمه "آتلیه عکس ونوس" پورت d به آتلیه عکس و پورت b به ونوس وصل میشه حالا من میخوام حروف از الف روشن بشه برسه به سین ونوس .
    منظورم از منتظر موندن پورت اینه که تا حروف به کلمه ونوس برسه پورت باید خاموش بمونه دیگه. این چه جوریه
    برنامه من اینجوریه:
    کد:
       For E1 = 0 To 15
       Portd = Lookup(e1 , Efect1)
       Waitms 500
       Next
    
    Efect1:
        Data &B00000000
        Data &B00000001
        Data &B00000011
        Data &B00000111
        Data &B00001111
        Data &B00011111
        Data &B00111111
        Data &B01111111
        Data &B11111111
        Data &B01111111
        Data &B00111111
        Data &B00011111
        Data &B00001111
        Data &B00000111
        Data &B00000001
        Data &B00000000

  6. #6
    مدیریت سایت LightIran آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    1,126
    تشکر
    225
    تشکر شده 1,454 بار در 643 پست
    نه دیگه!شما باید هر دو تا رو با هم اجرا کنین!یعنی هم مقدار پورت d رو لود کنین هم پورت b رو!
    در ضمن شما همونطور که گفتین دارین انگار به دو تا پورت 8 بیتی به دیده پورت 16 بیتی نگاه میکنین پس باید داده موجود در بخش افکتتون هم 16 بیتی باشه و بعدش اون رو به هر دو پورت اعمال کنین!
    یا هم که به صورت توام به هر دو پورت داده بدین!
    مثل زیر:
    کد:
    For E1 = 0 To 15 Portd = Lookup(e1 , Efect1) PortB = lookup(e1 , Efrect2) Waitms 500 Next efect1: 'Some Data effect2: 'Some Data
    You can if you want!Trust Me
    تنها غیرممکن غیرممکن است پس تلاش کنید!

  7. #7
    کاربر عادی hamed_avr آواتار ها
    تاریخ عضویت
    May 2014
    نوشته ها
    78
    تشکر
    15
    تشکر شده 25 بار در 20 پست
    اینجوری نوشتم ولی دو تا پورت باهم انجام میدن
    کد:
          Do
       For E1 = 0 To 7
       Portd = Lookup(e1 , Efect1)
       Portb = Lookup(e1 , Efect2)
       Waitms 500
       Next
    
           Loop
    
    
        Efect1:
        Data &B00000001
        Data &B00000011
        Data &B00000111
        Data &B00001111
        Data &B00011111
        Data &B00111111
        Data &B01111111
        Data &B11111111
    
       Efect2:
        Data &B00000001
        Data &B00000011
        Data &B00000111
        Data &B00001111
        Data &B00011111
        Data &B00111111
        Data &B01111111
        Data &B11111111

  8. #8
    مدیریت سایت LightIran آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    1,126
    تشکر
    225
    تشکر شده 1,454 بار در 643 پست
    خب برای برنامه شما مثلا از کانال یک شروع بشه تا بره به کانال 16 اینجوری باید باشه
    اول پورت b مقداردهی بشه و بعدش پورت d
    کد:
    For E1 = 0 To 7
       Portd = Lookup(e1 , Efect1)
       Waitms 500
    Next
    
    
    For E1 = 0 To 7
       Portd = Lookup(e1 , Efect2)
       Waitms 500
    Next
    ولی اگر توام با هم بخاد مقادیر عوض بشه به صورت زیر باید عمل کنید:
    مثلا در مثال زیر من میخام ابتدا چهار تا بیت پورت B رو روشن کنم بعد نیم ثانیه فاصله بیفته و برعکس چهار تا بیت اول پورت D روشن بشه

    کد:
    For E1=0 to 1 PortB=lookup(e1,efect1) portD=lookup(e1,efect2) waitms 5000 Next efect1: data &B00001111 data &B00000000 efect2: data &B00000000 data &b00001111
    در این حالت شما دو تا جدول داده دارید ولی دیتاهاشون باید متناسب با هم نوشته بشه!ولی در حالت قبلی چون عملکرد پورت ها بعد هم بود شما یک پورت رو تموم می کردید بعدش میرفتید سراغ پورت بعدی!یعنی همون انتظار که خودتون گفتین!
    You can if you want!Trust Me
    تنها غیرممکن غیرممکن است پس تلاش کنید!

  9. #9
    کاربر عادی hamed_avr آواتار ها
    تاریخ عضویت
    May 2014
    نوشته ها
    78
    تشکر
    15
    تشکر شده 25 بار در 20 پست
    خیلی عالی گفتید
    درست شد
    ممنون وقتتونو گذاشتین
    عیدتونم مبارک

  10. #10
    مدیریت سایت LightIran آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    1,126
    تشکر
    225
    تشکر شده 1,454 بار در 643 پست
    نقل قول نوشته اصلی توسط hamed_avr نمایش پست ها
    خیلی عالی گفتید
    درست شد
    ممنون وقتتونو گذاشتین
    عیدتونم مبارک
    خواهش میکنم.عید شمام مبارک
    فقط لطفا برای تشکر روی دکمه تشکر که سمت راست پایین تمامی پست ها مشخصه استفاده کنید بهتره!
    بازم مشکلی بود در خدمتم
    موفق باشید
    You can if you want!Trust Me
    تنها غیرممکن غیرممکن است پس تلاش کنید!

صفحه 1 از 2 12 آخرینآخرین

کلمات کلیدی این موضوع

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

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