اطلاعیه

Collapse
No announcement yet.

کد ساده اسمبلی

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

    کد ساده اسمبلی

    سلام خدمت دوستان و اساتید محترم می خواستم یه راهنمایی در مورد کد زیر بهم بدید
    برنامه 4 تا کلید برای روشن کردن 4 عدد لامپ

    [code=asm]START: JNB P1.2 , AW2
    START1: JNB P1.3 , AW3
    START2: JNB P1.4 , AW4
    START3: JNB P1.5 , AW5

    LJMP START
    AW2:
    CPL P3.2
    CALL DEL
    LJMP START1
    AW3:
    CPL P3.3
    CALL DEL
    LJMP START2
    AW4:
    CPL P3.4
    CALL DEL
    LJMP START3
    AW5:
    CPL P3.5
    CALL DEL
    LJMP START

    DEL:
    MOV R1,#0
    F: MOV R2,#0
    Z1: NOP
    NOP
    DJNZ R2,Z1
    DJNZ R1,F
    RET

    END[/code]

    #2
    پاسخ : کد ساده اسمبلی

    دوست عزیز این چیزی که من می بینم برای 8051 نوشته شده.اون طوری که مشخصه مقدار چهار تا ورودی رو کنترل میکنه هر وقت یکیشون صفر شد به یه لیبل پرش میکنه و اونجا یک خروجی رو toggle میکنه بعد یک وقفه داره و میره سراغ کلید بعدی و الی آخر
    Aristar Group - Always And Forever

    دیدگاه


      #3
      پاسخ : کد ساده اسمبلی

      ممنون که پاسخ دادید میتونید قسمت تایع وقفه اش رو بیشتر بهم توضیح بدید که چی هست

      دیدگاه


        #4
        پاسخ : کد ساده اسمبلی

        فکر کنم نزدیک 6 سالی هست با 8051 کار نکردم ولی اون چیزی که یادمه اینجوری میشه.مقدار 0 رو در رجیسترهای 0 و 1 لود میکنه.بعد از دو Nop (هیچ عملی انجام نمیدن و فقط باعث میشه یک سیکل ساعت برنامه وایسه) میره سراغ بررسی مقدار رجیسترها.
        کد DJNZ از مقدار رجیستر یک واحد کم میکنه و اگر مقدار رجیستر صفر نبود به لیبلی که نوشته پرش میکنه. دستور بعدی هم همینطور.
        فقط با داشته های من اینکه مقدار 0 رو به رجیستر لود میکنه یک مقدار غیرمنطقی میاد .شاید یک عدد دیگه باشه چون اگر صفر میشه کل وقفه بدون وابسته به مقادیر رجیستر کار میکنه و یکجور کار بی هدف میشه.
        Aristar Group - Always And Forever

        دیدگاه


          #5
          پاسخ : کد ساده اسمبلی

          واقعا ممنون که پاسخ دادید

          دیدگاه

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