سلام دوستان عزیز
من یک برنامه کیبور دارم که کی خوام ورودی های اون رو در ثبات ذحیره کنم.
یک پروژه دارم که باید در اون یک در باز کن داشته باشم که 4 تا رمز 4 رقمی داشته باشه و هر کدوم از این رمز ها که وارد شد اگر درست بود در باز بشه و اگر اشتباه بود آژیر به صدا در بیاد.
متاسفانه برای نگهداری ورودی کیبورد در ثبات مشکل دارم. اگر کسی بتونه کمک کنه واقعا ممنونش می شم. چون روزهای آخر ترم هستش و کارآموزی و پروژه پایانی ایم هم هنوز تموم نشده.
برنامه کیبورد ام هم این زیر نوشتم:
ORG 0000H
MOV A,#38H
CALL JAVAD
CALL DELAY
MOV A,#0EH
CALL JAVAD
CALL DELAY
MOV A,#80H
CALL JAVAD
CALL DELAY
START:
MOV P1,#00000000B
CALL WAIT_OPEN
CALL DELAY
TRY_AGAIN:
CALL WAIT_PRESSED
CALL DELAY
MOV A,P3
ANL A,#000011111B
CJNE A,#00001111B,SCAN
SJMP TRY_AGAIN
SCAN:
MOV DPTR,#200H
MOV A,#11111110B
MOV R6,#4
CALL ROW_SEARCH
MOV A,R7
CJNE A,#0FH,FIND_OFFSET
SJMP START
FIND_OFFSET:
MOV R0,#0
ROTATE:
RRC A
JNC FIND_KEY
INC R0
SJMP ROTATE
FIND_KEY:
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
CALL HOMAM
CALL DELAY
SJMP START
WAIT_OPEN:
MOV A,P3
ANL A,#00001111B
CJNE A,#00001111B,WAIT_OPEN
RET
WAIT_PRESSED:
MOV A,P3
ANL A,#00001111B
CJNE A,#00001111B,EXIT
SJMP WAIT_PRESSED
EXIT:
RET
ROW_SEARCH:
MOV P1,A
MOV B,P3
ANL B,#00001111B
MOV R7,B
CJNE R7,#00001111B,FIND_ROW
RL A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
DJNZ R6,ROW_SEARCH
FIND_ROW:
RET
DELAY:
MOV R1,#10
LOOP:
MOV TH0,HIGH(-1000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R1,LOOP
RET
JAVAD:
CALL READY
MOV P2,A
CLR P3.5
CLR P3.6
SETB P3.7
CLR P3.7
RET
HOMAM:
CALL READY
MOV P2,A
SETB P3.5
CLR P3.6
SETB P3.7
CLR P3.7
RET
READY:
SETB P2.7
CLR P3.5
SETB P3.6
BACK:
CLR P3.7
SETB P3.7
JB p2.7,back
RET
ORG 200H
DB '7','8','9',' ;/'
DB '4','5','6','*& #039;
DB '1','2','3',' ;-'
DB '?','0','=','+& #039;
END
من یک برنامه کیبور دارم که کی خوام ورودی های اون رو در ثبات ذحیره کنم.
یک پروژه دارم که باید در اون یک در باز کن داشته باشم که 4 تا رمز 4 رقمی داشته باشه و هر کدوم از این رمز ها که وارد شد اگر درست بود در باز بشه و اگر اشتباه بود آژیر به صدا در بیاد.
متاسفانه برای نگهداری ورودی کیبورد در ثبات مشکل دارم. اگر کسی بتونه کمک کنه واقعا ممنونش می شم. چون روزهای آخر ترم هستش و کارآموزی و پروژه پایانی ایم هم هنوز تموم نشده.
برنامه کیبورد ام هم این زیر نوشتم:
ORG 0000H
MOV A,#38H
CALL JAVAD
CALL DELAY
MOV A,#0EH
CALL JAVAD
CALL DELAY
MOV A,#80H
CALL JAVAD
CALL DELAY
START:
MOV P1,#00000000B
CALL WAIT_OPEN
CALL DELAY
TRY_AGAIN:
CALL WAIT_PRESSED
CALL DELAY
MOV A,P3
ANL A,#000011111B
CJNE A,#00001111B,SCAN
SJMP TRY_AGAIN
SCAN:
MOV DPTR,#200H
MOV A,#11111110B
MOV R6,#4
CALL ROW_SEARCH
MOV A,R7
CJNE A,#0FH,FIND_OFFSET
SJMP START
FIND_OFFSET:
MOV R0,#0
ROTATE:
RRC A
JNC FIND_KEY
INC R0
SJMP ROTATE
FIND_KEY:
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
CALL HOMAM
CALL DELAY
SJMP START
WAIT_OPEN:
MOV A,P3
ANL A,#00001111B
CJNE A,#00001111B,WAIT_OPEN
RET
WAIT_PRESSED:
MOV A,P3
ANL A,#00001111B
CJNE A,#00001111B,EXIT
SJMP WAIT_PRESSED
EXIT:
RET
ROW_SEARCH:
MOV P1,A
MOV B,P3
ANL B,#00001111B
MOV R7,B
CJNE R7,#00001111B,FIND_ROW
RL A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
DJNZ R6,ROW_SEARCH
FIND_ROW:
RET
DELAY:
MOV R1,#10
LOOP:
MOV TH0,HIGH(-1000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R1,LOOP
RET
JAVAD:
CALL READY
MOV P2,A
CLR P3.5
CLR P3.6
SETB P3.7
CLR P3.7
RET
HOMAM:
CALL READY
MOV P2,A
SETB P3.5
CLR P3.6
SETB P3.7
CLR P3.7
RET
READY:
SETB P2.7
CLR P3.5
SETB P3.6
BACK:
CLR P3.7
SETB P3.7
JB p2.7,back
RET
ORG 200H
DB '7','8','9',' ;/'
DB '4','5','6','*& #039;
DB '1','2','3',' ;-'
DB '?','0','=','+& #039;
END
دیدگاه