اطلاعیه

Collapse
No announcement yet.

یک مشکل در کد (CodeVisionAVR C Compiler)

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

    یک مشکل در کد (CodeVisionAVR C Compiler)

    با سلام و روز به خیر

    من با یک مشکل برخورد کردم از شما در این مورد کمک می خوام
    مشکل من این که مفهوم یک کد در کی پدو نمی دونم
    کد در بخش switch(PINA%&0XF0) هست تمام عملکرد برنامه رو می دونم اما نمی چرا رجیستر ورودی رو با این کد AND کرده (علت AND کردن چیه ؟ که وقت AND نمی کنی اطلاعات از ورودی خونده نمیشه ؟)
    اینم کل کد:
    http://up6.iranblog.com/uploads/13138511351.c
    با تشکر از همه شما




    ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff

    #2
    پاسخ : یک مشکل در کد (CodeVisionAVR C Compiler)

    وقتی که در یک رجیستر تعدادی از بیتها مقادیرشون بی ارزشه برای ما (در این مثال 4 بیت کم ارزش) و فقط بر اساس تعدادی از بیتها و نه تمام بایت میخوایم تصمیم گیری کنیم بیتهای بی ارزش رو با AND با صفر به صفر تبدیل میکنیم . بیتهای باقیمانده که برای ما ارزشمند هستند رو با 1 اند میکنیم (که تو این مثال 4 بیت بالا با F یعنی 1111 اند شدند)
    و بعدش هم توی ساختار سوئیچ اومده و روی اون 16 حالت ایجاد شده (در حالت کلی برای 4 بیت بالا) تصمیم گیری کرده. توجه کنید که اگه 4 بیت پایین رو صفر نمیکرد حالات پیش اومده میتونست تا 256 حالت باشه

    دیدگاه


      #3
      پاسخ : یک مشکل در کد (CodeVisionAVR C Compiler)

      نوشته اصلی توسط mojalan
      وقتی که در یک رجیستر تعدادی از بیتها مقادیرشون بی ارزشه برای ما (در این مثال 4 بیت کم ارزش) و فقط بر اساس تعدادی از بیتها و نه تمام بایت میخوایم تصمیم گیری کنیم بیتهای بی ارزش رو با AND با صفر به صفر تبدیل میکنیم . بیتهای باقیمانده که برای ما ارزشمند هستند رو با 1 اند میکنیم (که تو این مثال 4 بیت بالا با F یعنی 1111 اند شدند)
      و بعدش هم توی ساختار سوئیچ اومده و روی اون 16 حالت ایجاد شده (در حالت کلی برای 4 بیت بالا) تصمیم گیری کرده. توجه کنید که اگه 4 بیت پایین رو صفر نمیکرد حالات پیش اومده میتونست تا 256 حالت باشه
      ممنون از کمک تون
      پس با این حساب میشه گفت علت اصلی AND کردن صفر کردن بیت های کم ارزش هست .
      تابراساس اون بتونیم 4 بیت که ورودی شده بتونیم بخونیم و 4 ییتی که ورودی نیست صفر کنیم تا مشکلی ایجاد نشه
      درست میگم؟
      با تشکر
      ffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffff

      دیدگاه


        #4
        پاسخ : یک مشکل در کد (CodeVisionAVR C Compiler)

        آره اینجا احتمالا منظورش همین بوده. یه جای دیگه هم که از AND و OR استفاده زیادی میشه وقتیه که شما میخوای از یک بایت فقط چند بیت خاص رو صفر یا یک بکنی که در اینصورت اون بیتها رو با صفر AND و یا با یک OR میکنی

        دیدگاه

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