各位大哥大姊您們好:

小弟今年高職三年級唸資訊科

我們要做專題報告及製作才能畢業〒ˍ〒

我們這組作的專題是 " 電子密碼鎖 " 但是小弟不知道它的程式碼什麼去寫也不懂

EN REG P2.7
RW REG P2.6
RS REG P2.5
SW REG P2.4
CS REG P2.3
SK REG P2.2
DI REG P2.1
DO REG P2.0
ADDR EQU 37H
CNT EQU 38H
SEC EQU 39H
;
ORG 00H
AJMP START
ORG 0BH
AJMP TIMER0
;------
; MAIN
;------
START: MOV SP,#60H
CLR SK
SETB SW
ACALL INIT ;INITIAL RAM & LCD
ACALL SET0 ;SET TIMER 0
L0: ACALL ON ;POWER ON
L1: ACALL CONV
ACALL SCAN
MOV A,R5
CJNE A,#BH,L2 ;HELP
AJMP HELP
L2: CJNE A,#CH,L3 ;F1
AJMP F1
L3: CJNE A,#DH,L4 ;F2
AJMP F2
L4: CJNE A,#EH,L5 ;F3
AJMP F3
L5: CJNE A,#FH,L1 ;F4
AJMP F4
;------
; HELP
;------
HELP: SETB SW
SJMP L0
;----
; F1
;----
F1: ACALL CLRLCD
MOV A,#86H
ACALL W_INS
MOV CNT,#4
MOV DPTR,#MSG3 ;'TIME'
ACALL W_STR
F11: ACALL CONV ;BCD TO ASCII
MOV A,#C4H
ACALL W_INS
ACALL DISP ;LCD DISPLAY DATA
ACALL SCAN
MOV A,R5
CJNE A,#BH,F12 ;HELP
AJMP HELP
F12: CJNE A,#DH,F13 ;F2
AJMP F2
F13: CJNE A,#EH,F14 ;F3
AJMP F3
F14: CJNE A,#FH,F11 ;F4
AJMP F4
;----
; F2
;----
F2: ACALL CLRLCD
MOV R0,#48H ;INPUT BUFFER
MOV A,#82H
ACALL W_INS
MOV CNT,#11
MOV DPTR,#MSG4
ACALL W_STR
MOV A,#C4H
ACALL W_INS
F21: ACALL SCAN
MOV A,R5
XRL A,#16 ;NOT
JZ F21
MOV A,R5
CJNE A,#AH,F22
AJMP SETF2 ;SET
F22: CJNE A,#BH,F23 ;HELP
AJMP HELP
F23: CJNE A,#CH,F24 ;F1
AJMP F1
F24: CJNE A,#DH,F25 ;F2
AJMP F21
F25: CJNE A,#EH,F26 ;F3
AJMP F3
F26: CJNE A,#FH,F27 ;F4
AJMP F4
F27: MOV A,R5
MOV @R0,A
ORL A,#30H
ACALL W_DATA
INC R0
CJNE R0,#4EH,F28
MOV R0,#48H
MOV A,#C4H
ACALL W_INS
F28: SJMP F21
;--------
; F2-SET
;--------
SETF2: MOV R2,#3
MOV R0,#48H
MOV R1,#33H
T1: MOV A,@R0
ANL A,#0FH
SWAP A
INC R0
ADD A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,T1
;
MOV R0,#30H
MOV R1,#33H
MOV A,@R1
CLR C
SUBB A,#24H ;HOUR>24?
JNC T2
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
CLR C
SUBB A,#60H ;MIN>60?
JNC T2
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
CLR C
SUBB A,#60H ;SEC>60?
JNC T2
MOV A,@R1
MOV @R0,A
T2: AJMP F1
;----
; F3
;----
F3: ACALL CLRLCD
MOV A,#83H
ACALL W_INS
MOV CNT,#10
MOV DPTR,#MSG5
ACALL W_STR
MOV A,#C6H
ACALL W_INS
MOV R0,#50H
F31: ACALL SCAN
MOV A,R5
XRL A,#16 ;NOT
JZ F31
MOV A,R5
CJNE A,#AH,F32 ;SET
AJMP SETF3
F32: CJNE A,#BH,F33 ;CR
AJMP HELP
F33: CJNE A,#CH,F34 ;F1
AJMP F1
F34: CJNE A,#DH,F35 ;F2
AJMP F2
F35: CJNE A,#EH,F36 ;F3
AJMP F31
F36: CJNE A,#FH,F37 ;F4
AJMP F4
F37: MOV A,R5
MOV @R0,A
ORL A,#30H
ACALL W_DATA
INC R0
CJNE R0,#54H,F38
MOV R0,#50H
MOV A,#C6H
ACALL W_INS
F38: SJMP F31
;--------
; F3-SET
;--------
SETF3: CLR F0 ;F0=0,ERROR.F0=1,EXACT
ACALL R_CODE
MOV R2,#4
MOV R0,#50H
MOV R1,#54H
C1: MOV A,@R0
XRL A,@R1
JNZ C2
INC R0
INC R1
DJNZ R2,C1
CLR SW
SETB F0 ;CODE EXACT
C2: MOV A,#C6H
ACALL W_INS
MOV DPTR,#MSG6 ;MSG6='EXACT'
JB F0,C3
MOV DPTR,#MSG7 ;MSG7='ERROR'
C3: MOV CNT,#5
ACALL W_STR
C4: ACALL SCAN
MOV A,R5
CJNE A,#BH,C5 ;HELP
AJMP HELP
C5: CJNE A,#CH,C6 ;F1
AJMP F1
C6: CJNE A,#DH,C7 ;F2
AJMP F2
C7: CJNE A,#EH,C8 ;F3
AJMP F3
C8: CJNE A,#FH,C9 ;F4
AJMP F4
C9: AJMP C4
;----
; F4
;----
F4: ACALL CLRLCD
MOV A,#84H
ACALL W_INS
MOV CNT,#8
MOV DPTR,#MSG8
ACALL W_STR
MOV A,#C6H
MOV R0,#54H
ACALL W_INS
F41: ACALL SCAN
MOV A,R5
XRL A,#16 ;NOT
JZ F41
MOV A,R5
CJNE A,#AH,F42
AJMP SETF4 ;SET
F42: CJNE A,#BH,F43 ;HELP
AJMP HELP
F43: CJNE A,#CH,F44 ;F1
AJMP F1
F44: CJNE A,#DH,F45 ;F2
AJMP F2
F45: CJNE A,#EH,F46 ;F3
AJMP F3
F46: CJNE A,#FH,F47 ;F4
AJMP F4
F47: MOV A,R5
MOV @R0,A
ADD A,#30H
ACALL W_DATA
INC R0
CJNE R0,#58H,F48
MOV R0,#54H
MOV A,#C6H
ACALL W_INS
F48: SJMP F41
;--------
; F4-SET
;--------
SETF4: ACALL W_CODE
ACALL CLRLCD
MOV A,#84H
ACALL W_INS
MOV CNT,#8
MOV DPTR,#MSG9
ACALL W_STR
M0: ACALL SCAN
MOV A,R5
CJNE A,#BH,M1 ;HELP
AJMP HELP
M1: CJNE A,#CH,M2 ;F1
AJMP F1
M2: CJNE A,#DH,M3 ;F2
AJMP F2
M3: CJNE A,#EH,M4 ;F3
AJMP F3
M4: CJNE A,#FH,M0 ;F4
AJMP F4
;----------
; SCAN KEY
;----------
SCAN: MOV R5,#0 ;KEY VALUE
MOV R7,#4 ;COLUME NUM
MOV R6,#11111110B
COL: MOV A,R6
MOV P3,A
JB P3.4,S1
JNB P3.4,$ ;DEBOUNCE
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP S5 ;First Line
S1: INC R5
JB P3.5,S2
JNB P3.5,$ ;DEBOUNCE
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP S5 ;Second Line
S2: INC R5
JB P3.6,S3
JNB P3.6,$
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP S5 ;Third Line
S3: INC R5
JB P3.7,S4
JNB P3.7,$
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP S5 ;Fouth Line
S4: INC R5
MOV A,R6
RL A
MOV R6,A
DJNZ R7,COL
S5: RET
;----------
; POWER ON
;----------
ON: PUSH A
MOV A,#80H
ACALL W_INS
MOV CNT,#16
MOV DPTR,#MSG1
ACALL W_STR
MOV A,#C0H
ACALL W_INS
MOV CNT,#16
MOV DPTR,#MSG2
ACALL W_STR
POP A
SETB SW
RET
;------------
; SET TIMER0
;------------
SET0: MOV SEC,#100
MOV TMOD,#01H
MOV IE,#10000010B
MOV TH0,#>(65536-10000)
MOV TL0,#SETB TR0
RET
;----------------
; INIT RAM & LCD
;----------------
INIT: MOV R0,#6
MOV R1,#30H
CLR A
NEXT0: MOV @R1,A
INC R1
DJNZ R0,NEXT0
MOV R0,#14
MOV R1,#40H
CLR A
NEXT1: MOV @R1,A
INC R1
DJNZ R0,NEXT1
;
MOV A,#38H
ACALL W_INS
MOV A,#38H
ACALL W_INS
MOV A,#38H
ACALL W_INS
MOV A,#38H
ACALL W_INS
MOV A,#08H ;FUNCTION SET
ACALL W_INS
MOV A,#01H ;CLEAR DISPLAY
ACALL W_INS
MOV A,#06H ;INPUT MODE SET
ACALL W_INS
MOV A,#0CH ;DISPLAY ON/OFF
ACALL W_INS
RET
;-----------
; CLEAR LCD
;-----------
CLRLCD: MOV A,#01H
ACALL W_INS
RET
;--------------
; BCD TO ASCII
;--------------
CONV: MOV A,#30H
MOV R0,A
MOV A,@R0
SWAP A
ANL A,#0FH
ADD A,#30H
MOV 40H,A
MOV A,@R0
ANL A,#0FH
ADD A,#30H
MOV 41H,A
MOV 42H,#":"
INC R0
MOV A,@R0
SWAP A
ANL A,#0FH
ADD A,#30H
MOV 43H,A
MOV A,@R0
ANL A,#0FH
ADD A,#30H
MOV 44H,A
MOV 45H,#":"
INC R0
MOV A,@R0
SWAP A
ANL A,#0FH
ADD A,#30H
MOV 46H,A
MOV A,@R0
ANL A,#0FH
ADD A,#30H
MOV 47H,A
RET
;--------------
; DISPLAY TIME
;--------------
DISP: MOV R1,#8
MOV R0,#40H
DSP: MOV A,@R0
ACALL W_DATA
INC R0
DJNZ R1,DSP
RET
;---------------------
; WRITE STRING TO LCD
;---------------------
W_STR: PUSH A
MOV R5,#0
STR: MOV A,R5
MOVC A,@A+DPTR
ACALL W_DATA
INC R5
DJNZ CNT,STR
POP A
RET
;------------------
; WRITE INS TO LCD
;------------------
W_INS: PUSH A
ACALL CHECK
CLR RS
CLR RW
SETB EN
MOV P1,A
CLR EN
POP A
RET
;-------------------
; WRITE DATA TO LCD
;-------------------
W_DATA: PUSH A
ACALL CHECK
SETB RS
CLR RW
SETB EN
MOV P1,A
CLR EN
POP A
RET
;----------------
; CHECK LCD BUSY
;----------------
CHECK: PUSH A
BUSY: CLR RS
SETB RW
SETB EN
MOV A,P1
CLR EN
JB ACC.7,BUSY
ACALL DELAY
POP A
RET
;-------
; DELAY
;-------
DELAY: MOV R6,#20
D1: MOV R7,#150
DJNZ R7,$
DJNZ R6,D1
RET
;-------------
; JUDGE H/M/S
;-------------
JUDGE: PUSH A
MOV A,32H
ADD A,#1
DA A
MOV 32H,A
CJNE A,#60H,FIX
MOV 32H,#00
MOV A,31H
ADD A,#1
DA A
MOV 31H,A
CJNE A,#60H,FIX
MOV 31H,#00
MOV A,30H
ADD A,#1
DA A
MOV 30H,A
CJNE A,#24H,FIX
MOV 30H,#00
FIX: POP A
RET
;--------
; TIMER0
;--------
TIMER0: PUSH A ;TIMER 1 SEC
MOV TH0,#>(65536-10000)
MOV TL0,#DJNZ SEC,EXIT3
MOV SEC,#100
ACALL JUDGE
EXIT3: POP A
RETI
;----------------------
; READ CODE FORM 93CX6
;----------------------
R_CODE: PUSH A
MOV ADDR,#0
MOV R0,#54H
MOV R1,#2
LOOP1: ACALL READ
INC ADDR
DJNZ R1,LOOP1
POP A
RET
;---------------------
; WRITE CODE TO 93CX6
;---------------------
W_CODE: PUSH A
MOV ADDR,#0
MOV R0,#54H
MOV R1,#2
LOOP2: ACALL ERASE
ACALL WEN
ACALL WRITE
ACALL WDS
INC ADDR
DJNZ R1,LOOP2
POP A
RET
;-------------
; ERASE 93CX6
;-------------
ERASE: PUSH A
MOV R6,#00000111B
MOV A,ADDR
MOV R7,A
ACALL SHIFT5
SETB CS
MOV CNT,#11
ER: MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV DI,C
SETB SK
NOP
CLR SK
NOP
DJNZ CNT,ER
ACALL CHKBSY
CLR CS
POP A
RET
;--------------------
; 93CX6 WRITE ENABLE
;--------------------
WEN: PUSH A
MOV R6,#00000100B
MOV R7,#11000000B
ACALL SHIFT5
SETB CS
MOV CNT,#11
W1: MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV DI,C
SETB SK
NOP
CLR SK
NOP
DJNZ CNT,W1
CLR CS
POP A
RET
;---------------------
; 93CX6 WRITE DISABLE
;---------------------
WDS: PUSH A
MOV R6,#00000100B
MOV R7,#00000000B
ACALL SHIFT5
SETB CS
MOV CNT,#11
DS: MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV DI,C
SETB SK
NOP
CLR SK
NOP
DJNZ CNT,DS
CLR CS
POP A
RET
;-------
; WRITE
;-------
WRITE: PUSH A
MOV R6,#00000101B
MOV A,ADDR
MOV R7,A
ACALL SHIFT5
SETB CS
MOV CNT,#11
WR: MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV DI,C
SETB SK
NOP
CLR SK
NOP
DJNZ CNT,WR
ACALL W_DAT
ACALL CHKBSY
CLR CS
POP A
RET
;---------------------
; WRITE DATA TO 93CX6
;---------------------
W_DAT: PUSH A
MOV R3,#2
WD1: MOV A,@R0
MOV R4,#8
WD2: RLC A
MOV DI,C
SETB SK
NOP
CLR SK
NOP
DJNZ R4,WD2
INC R0
DJNZ R3,WD1
POP A
RET
;------
; READ
;------
READ: PUSH A
MOV R6,#00000110B
MOV A,ADDR
MOV R7,A
ACALL SHIFT5
SETB CS
MOV CNT,#11
RD: MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV DI,C
SETB SK
NOP
CLR SK
NOP
DJNZ CNT,RD
ACALL R_DAT
CLR CS
POP A
RET
;----------------------
; READ DATA FROM 93CX6
;----------------------
R_DAT: PUSH A
MOV R3,#2
RD1: MOV R4,#8
RD2: SETB SK
NOP
CLR SK
NOP
MOV C,DO
RLC A
DJNZ R4,RD2
MOV @R0,A
INC R0
DJNZ R3,RD1
POP A
RET
;------------------
; SHIFT LEFT 5 BIT
;------------------
SHIFT5: PUSH A
MOV CNT,#5
SHT: MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
DJNZ CNT,SHT
POP A
RET
;------------------
; CHECK 93CX6 BUSY
;------------------
CHKBSY: PUSH A
BSY: CLR CS
SETB CS
MOV C,DO
JNC BSY
POP A
RET
;---------
; MESSAGE
;---------
MSG1: DB 'F1:TIME F2:ADJ'
MSG2: DB 'F3:INPUT F4:SET'
MSG3: DB 'TIME'
MSG4: DB 'ADJUST TIME'
MSG5: DB 'INPUT CODE'
MSG6: DB 'EXACT'
MSG7: DB 'ERROR'
MSG8: DB 'SET CODE'
MSG9: DB 'SUCCESS!'
END

這是我重我同學那拿過來的其實我們這組所有人都不太懂這程式碼 還有人說我們這組的程式
碼全部都是錯誤連篇 能請大哥大姊及高手專家幫幫忙小弟嗎????
也煩請幫忙小弟解釋程式碼 小弟的程式碼的過程是要輸入鍵盤與LED和等等.....相關一些
密碼鎖的事情 謝謝您們的講解 這個程式碼是關於我們能不能拿畢業證書的大問題
能煩請各位的幫忙謝謝~~~~~~~~〒ˍ〒


共 4 則回應

1 樓 · 魯蛇實驗室 · 發表於 2012-02-24 15:36 · 檢舉

作業自己做


2 樓 · 小乖精靈 · 發表於 2012-02-24 15:42 · 檢舉

哇靠,這不是8051嗎?

雖然看得懂

不過自己的東西自己作

加油,現在靠別人,就會學不到東西!

多花點時間看,你會看懂得


3 樓 · 該不會 · 發表於 2012-03-01 07:19 · 檢舉

這是組合語言<( ̄︶ ̄)>

你要短時間弄懂建議你去用keil C之類的compiler來幫你

基本上就是寫C,剩下的部分他會幫你處理好

當初我們專題也是弄這個相關的

不過就如同上面幾位所述,自己的作業自己解決


4 樓 · jasonking · 發表於 2012-07-18 23:35 · 檢舉

╮(╯_╰)╭ 還是謝謝幾位大哥大姊的回覆!

我們的專題已經成功做好了

也完成作業 我們也畢業了 不必再碰到這個一推頭大的程式碼!!!!!
囧rz