ORG 00H
MOV R7,#00H ;延時(shí)
DJNZ R7,$
;***************設(shè)置內(nèi)定密碼********************
MOV 35H,#06
MOV 34H,#06
MOV 33H,#06
MOV 32H,#06
MOV 31H,#06
MOV 30H,#06
;***************************************************************
START: MOV P0,#0FFH ;P0口都置1
MOV 45H,#09 ;清除存放地址40H-45H的地址
MOV 44H,#08
MOV 43H,#07
MOV 42H,#06
MOV 41H,#05
MOV 40H,#04
;***************************************************************
L2: MOV P0,#0FFH ;P0口都置1
MOV R3,#0EFH ;掃描指針初值(P14=0)
MOV R1,#00H ;鍵盤取碼指針
L3: MOV A,R3 ;掃描指針載入累加器
MOV P1,A ;輸入至P1掃描
MOV A,P1 ;讀入P1值
MOV R4,A ;存入R4,以判斷按鈕是否放開?
SETB C ;C=1
MOV R5,#03H ;掃描P10-P12
L4: RRC A
JNC KEYIN ;C=0則有鍵按下
INC R1 ;無鍵按下則指針加1
DJNZ R5,L4 ;三列掃描完后掃描下一行
MOV A,R3 ;載入掃描指針
SETB C ;C=1
RLC A ;掃描下一行
MOV R3,A ;存入掃描指針寄存器
JC L3 ;C=1則4行未掃描完
JMP L2 ;C=0則4行已經(jīng)掃描完,回到第一行從新開始掃描
;*************************************************************
KEYIN: MOV R7,#10 ;消除抖動(dòng)
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
D2: MOV A,P1
XRL A,R4 ;按鈕放開否?
JZ D2 ;A=R4則未放開,等待
MOV A,R1 ;按鍵放開了,載入按鍵指針
MOV DPTR,#TABLE ;數(shù)據(jù)指針指到TABLE
MOVC A,@A+DPTR ;至TABLE取碼
MOV R7,A ;取到按鍵值暫存入R7
XRL A,#0AH ;是否按"*"
JZ SET0 ;是則設(shè)定新密碼
MOV A,R7 ;載入按鍵值
XRL A,#0BH ;是否按"#"
JZ COMP ;是則去比較密碼
MOV A,R7 ;不是則載入按鍵值
XCH A,40H ;現(xiàn)按鍵值存入(40H)
XCH A,41H ;舊(40H)值存入 (41H)
XCH A,42H ;舊(41H)值存入 (42H)
XCH A,43H ;舊(42H)值存入 (43H)
XCH A,44H ;舊(43H)值存入 (44H)
XCH A,45H ;舊(44H)值存入 (45H)
JMP L2
;********************************************************************
SET0: MOV R2,#06H ;6個(gè)密碼
MOV R0,#40H ;按鍵顯示地址
MOV R1,#30H ;密碼存放地址
E1: MOV A,@R0 ;40H存入30H······45H存入35H
XCH A,@R1
INC R0
INC R1
DJNZ R2,E1
CALL DELAY ;延時(shí)
E2: JMP START ;************************************
;********************************************************************
COMP: MOV R1,#45H ;按鍵顯示地址
MOV R0,#35H ;密碼存放地址
MOV R2,#06H ;6個(gè)碼
C1: MOV A,@R1 ;按鍵值與密碼值比較
XRL A,@R0
JNZ C3 ;不同則報(bào)警
DEC R1 ;相同則比較下一個(gè)碼
DEC R0
DJNZ R2,C1
CLR P0.0 ;令電鎖動(dòng)作
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP L2
C3: CLR P0.1
CLR P0.2
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP L2
;********************* 延時(shí)時(shí)間 **************************
DELAY: MOV R7,#248
D3: MOV R6,#248
DJNZ R6,$
DJNZ R7,D3
RET
ORG 100H
TABLE: DB 01H,02H,03H ;鍵盤值
DB 04H,05H,06H
DB 07H,08H,09H
DB 0AH,00H,0BH
END
20.s(1): error A9: SYNTAX ERROR
20.s(1): error A3: ILLEGAL CHARACTER
20.s(1): error A3: ILLEGAL CHARACTER
20.s(1): error A3: ILLEGAL CHARACTER
20.s(1): error A3: ILLEGAL CHARACTER
Target not created
這是問題,怎么解決?????謝謝了!!!!
你試一試這個(gè)。是不是看起來和你的一模一樣?
ORG 00H
MOV R7,#00H ;延時(shí)
DJNZ R7,$
;***************設(shè)置內(nèi)定密碼********************
MOV 35H,#06
MOV 34H,#06
MOV 33H,#06
MOV 32H,#06
MOV 31H,#06
MOV 30H,#06
;***************************************************************
START: MOV P0,#0FFH ;P0口都置1
MOV 45H,#09 ;清除存放地址40H-45H的地址
MOV 44H,#08
MOV 43H,#07
MOV 42H,#06
MOV 41H,#05
MOV 40H,#04
;***************************************************************
L2: MOV P0,#0FFH ;P0口都置1
MOV R3,#0EFH ;掃描指針初值(P14=0)
MOV R1,#00H ;鍵盤取碼指針
L3: MOV A,R3 ;掃描指針載入累加器
MOV P1,A ;輸入至P1掃描
MOV A,P1 ;讀入P1值
MOV R4,A ;存入R4,以判斷按鈕是否放開?
SETB C ;C=1
MOV R5,#03H ;掃描P10-P12
L4: RRC A
JNC KEYIN ;C=0則有鍵按下
INC R1 ;無鍵按下則指針加1
DJNZ R5,L4 ;三列掃描完后掃描下一行
MOV A,R3 ;載入掃描指針
SETB C ;C=1
RLC A ;掃描下一行
MOV R3,A ;存入掃描指針寄存器
JC L3 ;C=1則4行未掃描完
JMP L2 ;C=0則4行已經(jīng)掃描完,回到第一行從新開始掃描
;*************************************************************
KEYIN: MOV R7,#10 ;消除抖動(dòng)
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
D2: MOV A,P1
XRL A,R4 ;按鈕放開否?
JZ D2 ;A=R4則未放開,等待
MOV A,R1 ;按鍵放開了,載入按鍵指針
MOV DPTR,#TABLE ;數(shù)據(jù)指針指到TABLE
MOVC A,@A+DPTR ;至TABLE取碼
MOV R7,A ;取到按鍵值暫存入R7
XRL A,#0AH ;是否按"*"
JZ SET0 ;是則設(shè)定新密碼
MOV A,R7 ;載入按鍵值
XRL A,#0BH ;是否按"#"
JZ COMP ;是則去比較密碼
MOV A,R7 ;不是則載入按鍵值
XCH A,40H ;現(xiàn)按鍵值存入(40H)
XCH A,41H ;舊(40H)值存入 (41H)
XCH A,42H ;舊(41H)值存入 (42H)
XCH A,43H ;舊(42H)值存入 (43H)
XCH A,44H ;舊(43H)值存入 (44H)
XCH A,45H ;舊(44H)值存入 (45H)
JMP L2
;********************************************************************
SET0: MOV R2,#06H ;6個(gè)密碼
MOV R0,#40H ;按鍵顯示地址
MOV R1,#30H ;密碼存放地址
E1: MOV A,@R0 ;40H存入30H······45H存入35H
XCH A,@R1
INC R0
INC R1
DJNZ R2,E1
CALL DELAY ;延時(shí)
E2: JMP START ;************************************
;********************************************************************
COMP: MOV R1,#45H ;按鍵顯示地址
MOV R0,#35H ;密碼存放地址
MOV R2,#06H ;6個(gè)碼
C1: MOV A,@R1 ;按鍵值與密碼值比較
XRL A,@R0
JNZ C3 ;不同則報(bào)警
DEC R1 ;相同則比較下一個(gè)碼
DEC R0
DJNZ R2,C1
CLR P0.0 ;令電鎖動(dòng)作
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP L2
C3: CLR P0.1
CLR P0.2
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP L2
;********************* 延時(shí)時(shí)間 **************************
DELAY: MOV R7,#248
D3: MOV R6,#248
DJNZ R6,$
DJNZ R7,D3
RET
ORG 100H
TABLE: DB 01H,02H,03H ;鍵盤值
DB 04H,05H,06H
DB 07H,08H,09H
DB 0AH,00H,0BH
END
不知道你怎么輸進(jìn)去這么多的全角空格,keil不認(rèn),所以出錯(cuò)。
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |