ORG 00H
MOV R7,#00H ;延时
DJNZ R7,$
;***************设置内定密码********************
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行已经扫描完,回到第一行从新开始扫描
;*************************************************************
KEYIN: MOV R7,#10 ;消除抖动
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 ;数据指针指到TABLE
MOVC A,@A+DPTR ;至TABLE取码
MOV R7,A ;取到按键值暂存入R7
XRL A,#0AH ;是否按"*"
JZ SET0 ;是则设定新密码
MOV A,R7 ;载入按键值
XRL A,#0BH ;是否按"#"
JZ COMP ;是则去比较密码
MOV A,R7 ;不是则载入按键值
XCH A,40H ;现按键值存入(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个密码
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 ;延时
E2: JMP START ;************************************
;********************************************************************
COMP: MOV R1,#45H ;按键显示地址
MOV R0,#35H ;密码存放地址
MOV R2,#06H ;6个码
C1: MOV A,@R1 ;按键值与密码值比较
XRL A,@R0
JNZ C3 ;不同则报警
DEC R1 ;相同则比较下一个码
DEC R0
DJNZ R2,C1
CLR P0.0 ;令电锁动作
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
;********************* 延时时间 **************************
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
这是问题,怎么解决?????谢谢了!!!!
你试一试这个。是不是看起来和你的一模一样?
ORG 00H
MOV R7,#00H ;延时
DJNZ R7,$
;***************设置内定密码********************
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行已经扫描完,回到第一行从新开始扫描
;*************************************************************
KEYIN: MOV R7,#10 ;消除抖动
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 ;数据指针指到TABLE
MOVC A,@A+DPTR ;至TABLE取码
MOV R7,A ;取到按键值暂存入R7
XRL A,#0AH ;是否按"*"
JZ SET0 ;是则设定新密码
MOV A,R7 ;载入按键值
XRL A,#0BH ;是否按"#"
JZ COMP ;是则去比较密码
MOV A,R7 ;不是则载入按键值
XCH A,40H ;现按键值存入(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个密码
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 ;延时
E2: JMP START ;************************************
;********************************************************************
COMP: MOV R1,#45H ;按键显示地址
MOV R0,#35H ;密码存放地址
MOV R2,#06H ;6个码
C1: MOV A,@R1 ;按键值与密码值比较
XRL A,@R0
JNZ C3 ;不同则报警
DEC R1 ;相同则比较下一个码
DEC R0
DJNZ R2,C1
CLR P0.0 ;令电锁动作
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
;********************* 延时时间 **************************
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
不知道你怎么输进去这么多的全角空格,keil不认,所以出错。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |