燕 山 大 学 课 程 设 计 说 明 书
db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07h
GetKey:
mov dptr, #OUTBIT mov P2, dph
mov r0, #Low(IN) mov r1, #00100000b mov r2, #6
KLoop:
mov a, r1 cpl a
movx @dptr, a cpl a rr a mov r1, a movx a, @r0 cpl a
anl a, #0fh jnz Goon1 djnz r2, KLoop mov r2, #0ffh sjmp Exit
Goon1:
mov r1, a mov a, r2 dec a rl a
页
第21页 共29
燕 山 大 学 课 程 设 计 说 明 书
rl a mov r2, a mov a, r1 mov r1, #4 LoopC:
rrc a jc Exit inc r2
djnz r1, LoopC Exit:
mov a, r2
mov dptr, #KeyTable movc a, @a+dptr mov r2,a mov a,r2 XRL A,#0eH jz COMPARE MOV A,r2 XRL A,#0cH jz CLEAN MOV A,r2 XRL A,#0aH jz SET1 MOV A,r2 XRL A,#0fH jz SET2
WaitRelease:
mov dptr, #OUTBIT clr a
movx @dptr, a
mov r6, #10
页
第22页 共29
燕 山 大 学 课 程 设 计 说 明 书
call Delay call TestKey jnz WaitRelease mov a, r2 ret
READY: anl p1,#00H s: MOV R5,#00H ABC: CLR PSW.5
START:
MOV R4,#06H MOV R0,#60H CLEAR: MOV @R0,#00H INC R0
DJNZ R4,CLEAR mov sp, #40h
mov LEDBuf+0, #3fh mov LEDBuf+1, #3fh mov LEDBuf+2, #3fh mov LEDBuf+3, #3fh mov LEDBuf+4, #3fh mov LEDBuf+5, #3fh
MLoop:
call DisplayLED call TestKey jz MLoop call GetKey anl a, #0fh
mov dptr, #LEDMap movc a, @a+dptr XCH A,60H XCH A,61H
页
第23页 共29
燕 山 大 学 课 程 设 计 说 明 书
XCH A,62H XCH A,63H XCH A,64H XCH A,65H ljmp MLoop
CLEAN: ljmp START COMPARE:LJMP COMP
SET1:MOV A,PSW ANL A,#20H JZ START MOV R1,#65H MOV R0,#6FH MOV R2,#06H E1: MOV A,@R1 MOV @R0,A DEC R1 DEC R0 DJNZ R2,E1 SETB P1.3 lcall delay LJMP START SET2:MOV R2,#06H MOV R1,#60H MOV R0,#6AH S1:MOV A,@R1 XRL A,@R0 JNZ S3 INC R0 INC R1
DJNZ R2,S1 MOV R2,#06H MOV R1,#30H
页
第24页 共29
燕 山 大 学 课 程 设 计 说 明 书
MOV R0,#6AH S2: MOV A,@R0 MOV @R1,A INC R0 INC R1
DJNZ R2,S2 CLR P1.3 SETB P1.0 MOV R6,#250 LCALL DELAY CLR P1.0 ljmp START S3: setb P1.1 lcall delay lcall delay lcall delay clr p1.1
LJMP START COMP: MOV R1,#65H MOV R0,#35H MOV R2,#06H C1: MOV A,@R1 XRL A,@R0 JNZ C2 DEC R1 DEC R0 DJNZ R2,C1 setb P1.0 lcall delay lcall delay lcall delay clr p1.0
SETB PSW.5 ljmp START
页
第25页 共29