اطلاعیه

Collapse
No announcement yet.

اسکن صفحه کلید

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

    اسکن صفحه کلید

    سلام خدمت همه
    این قطعه کد در اسکن صفحه کلید چه کاری می کنند؟
    DDRC = 0xf0;
    PORTC = 0x0f;
    delay_us(5);
    scanCode= scanCode| PINC;
    دققیقا 0x0f و 0xf0 و خط آخر چه چیزی هستند؟


    #2
    پاسخ : اسکن صفحه کلید

    0x0f
    4 تا پین رو ورودی میکنه مبخونه ( سطر )
    0xf0
    هم 4 تای بعدی رو ( ستون )
    البته من یادم رفته

    دیدگاه


      #3
      پاسخ : اسکن صفحه کلید

      این کدها برای میکروکنترلره ؟؟
      نوشته اصلی توسط nvea
      DDRC = 0xf0;
      این دستور بیتهای (0,1,2,3) پورت C رو ورودی و بیتهای(4,5,6,7) رو خروجی میکنه.
      نوشته اصلی توسط nvea
      PORTC = 0x0f;
      این دستور بیتهای (0,1,2,3) پورت C رو "1" و بیتهای(4,5,6,7) رو "0" میکنه.
      نوشته اصلی توسط nvea
      delay_us(5);
      این دستور تاخیر 5میکرو ثانیه ایجاد میکنه.
      نوشته اصلی توسط nvea
      scanCode= scanCode| PINC;
      این دستور scanCode رو با PINC جمع میکنه یعنی در واقع عمل خواندن صفحه کلید و ریختن مقدار PINC روی متغیر scanCode رو انجام میده

      دیدگاه


        #4
        پاسخ : اسکن صفحه کلید

        نوشته اصلی توسط saeiddiod
        این کدها برای میکروکنترلره ؟؟این دستور بیتهای (0,1,2,3) پورت C رو ورودی و بیتهای(4,5,6,7) رو خروجی میکنه.این دستور بیتهای (0,1,2,3) پورت C رو "1" و بیتهای(4,5,6,7) رو "0" میکنه.این دستور تاخیر 5میکرو ثانیه ایجاد میکنه.این دستور scanCode رو با PINC جمع میکنه یعنی در واقع عمل خواندن صفحه کلید و ریختن مقدار PINC روی متغیر scanCode رو انجام میده
        سطر آخریعنی چی؟
        منظورم اینه که چه جوری؟

        دیدگاه


          #5
          پاسخ : اسکن صفحه کلید

          سلام..
          یه سوالی من هم داشتم گفتم اینجا بپرسم.البته با اجازه استارتر..
          این کد چطوری عمل میکنه؟
          کد:
          PORTC &= ~((1<<PORTC6)|(1<<PORTC5)|(1<<PORTC4)|(1<<PORTC3)|(1<<PORTC2)|(1<<PORTC1));
          تشکر

          دیدگاه


            #6
            پاسخ : اسکن صفحه کلید

            نوشته اصلی توسط amin tal
            سلام..
            یه سوالی من هم داشتم گفتم اینجا بپرسم.البته با اجازه استارتر..
            این کد چطوری عمل میکنه؟
            کد:
            PORTC &= ~((1<<PORTC6)|(1<<PORTC5)|(1<<PORTC4)|(1<<PORTC3)|(1<<PORTC2)|(1<<PORTC1));
            تشکر
            همون PORTC = 10000001 هست
            پین های 1 تا 6 رو صفر میکنه
            مثلا اگه بخام یک پین رو یک کنم :
            PORTC |= (1<<PORTC7)
            یا دو تا رو یک کنم
            PORTC |= (1<<PORTC5)|(1<<PORTC7)
            اگه بخام صفرش کنم
            PORTC &= ~(1<<PORTC3)

            دیدگاه


              #7
              پاسخ : اسکن صفحه کلید

              ممنون..
              خب تفسیرش به چه صورته؟
              مثلا | علامت or یا جمع هست....& علامت ضرب هست و ~ علامت تفریق فکر میکنم..
              مثال اولی و دومی رو فهمیدم و به این صورته که رجیستر های هر پورت یک مقدار مشخص میگیره و با مقدار قبلی خودش جمع میشه..
              ممنون میشم مثال اخر رو هم به همین صورت بیان کنید...تشکر

              دیدگاه

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