اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام دوستان.
    لطفا اگه برنامه اسکن صفحه کلید با زبان اسمبلی با میکرو 8051 رو دارید لطف کنید بذارید.
    فقط میخوام دکمه رو که میزنه عدد متناظر رو برگردونه.
    ممنون.
    اگر انسان از همه خطر ها پرهيز کند ، هرگز راه به جائي نخواهد برد...

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

    سلام پیام جان
    دو نمونه کد واست میذارم که هرکدوم با یه روش این کار رو می کنن ولی اصولشون یکیه. هر کدومو خواستی استفاده کن.
    اگه میخوای کد ها رو بخونی پیشنهاد میکنم توی notepad کپی پیست کنی چون اینجا به هم ریخته نشون میده.


    این نمونه اوله که با جدول جستجو این کار رو کرده که یه کمی پیچیده تره.(فقط یه کمی). ستون اول تا سوم = P2.0 - P2.2  ،  سطر اول تا سطر چهارم =  P0.0 - P0.3

    ORG 00H
    K1 : MOV P2,#0FFH
    AGAIN : MOV P0,#00H
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,AGAIN

    HERE : CALL DELAY
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,NEXT
    JMP HERE

    NEXT : CALL DELAY
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,FIND_ROW
    JMP HERE

    FIND_ROW : MOV P0,#11111110B
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,ROW1

    MOV P0,#11111101B
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,ROW2

    MOV P0,#11111011B
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,ROW3

    MOV P0,#11110111B
    MOV A,P2
    ANL A,#00000111B
    CJNE A,#00000111B,ROW4

    JMP HERE
    ROW1 : MOV DPTR,#KCODE1
    JMP FOUND_KEY

    ROW2 : MOV DPTR,#KCODE2
    JMP FOUND_KEY

    ROW3 : MOV DPTR,#KCODE3
    JMP FOUND_KEY

    ROW4 : MOV DPTR,#KCODE4

    FOUND_KEY : RRC A
    JNC MATCH
    INC DPTR
    JMP FOUND_KEY

    MATCH : CLR A
    MOVC A,@A+DPTR
    MOV P3,A
    JMP K1

    DELAY : MOV R4,#2
    S2 : MOV R5,#250
    NOP
    HERE1 : DJNZ R5,HERE1
    DJNZ R4,S2
    RET

    ORG 300H
    KCODE1 : DB 1,2,3
    KCODE2 : DB 4,5,6
    KCODE3 : DB 7,8,9
    KCODE4 : DB 254,0,254
    END

    اینم نمونه دوم که ساده تره و بصورت یه زیر برنامه نوشته شده و هر جا ورودی خواستی میتونی فراخوانی کنی. ستون اول تا سوم = P3.0 - P3.2  ،  سطر اول تا سطر چهارم =  P3.3 - P3.7

    GETKEY: MOV P3,#0FFH
    CLR P3.3
    CLR P3.4
    CLR P3.5
    CLR P3.6
    WAIT: JNB P3.0,HIT
    JNB P3.1,HIT
    JNB P3.2,HIT
    LJMP WAIT
    HIT: MOV P3,#0FFH
    CLR P3.3
    JNB P3.0,G1
    JNB P3.1,G2
    JNB P3.2,G3
    MOV P3,#0FFH
    CLR P3.4
    JNB P3.0,G4
    JNB P3.1,G5
    JNB P3.2,G6
    MOV P3,#0FFH
    CLR P3.5
    JNB P3.0,G7
    JNB P3.1,G8
    JNB P3.2,G9
    MOV P3,#0FFH
    CLR P3.6
    JNB P3.0,G10
    JNB P3.1,G0
    JNB P3.2,G11
    G1: MOV A,#1
    LJMP FIN
    G2: MOV A,#2
    LJMP FIN
    G3: MOV A,#3
    LJMP FIN
    G4: MOV A,#4
    LJMP FIN
    G5: MOV A,#5
    LJMP FIN
    G6: MOV A,#6
    LJMP FIN
    G7: MOV A,#7
    LJMP FIN
    G8: MOV A,#8
    LJMP FIN
    G9: MOV A,#9
    LJMP FIN
    G10: MOV A,#10
    LJMP FIN
    G0: MOV A,#0
    LJMP FIN
    G11: MOV A,#11
    FIN: RET
    [hr]
    موفق باشی 

    دیدگاه


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

      آقا ممنون.کارم راه افتاد (+)
      اگر انسان از همه خطر ها پرهيز کند ، هرگز راه به جائي نخواهد برد...

      دیدگاه

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