匯編程序如下
Outsugequ9004h
Outbitequ9002h
Keyinequ9001h
Portaequ8000h
Portbequ8001h
Portcequ8002h
Portdequ8003h
Cotabequ30H
Keysizeequ50h
Org0000h
Sjmpstart
Org0003h
Limpzd
Org0030h
Start:movkeysize,#39h
movdptr,#outseg
mova,keysize
movx@dptr,a
movdptr,#outbit
mova,#00000100b
movx@dptr,a
calldelay
clr
0
f
clr
1.0
p
movdptr,#portc
mova,#80h
movx@dptr,a
mov
0
r,#cotab
mov@
0
r,#03h
inc
0
r
mov@
0
r,#06h
inc
0
r
mov@
0
r,#0ch
inc
0
r
mov@
0
r,#09h
setbit0
setbea
setbe
0
x
1
L:mova,#11111011b
movdptr,#outbit
movx@dptr,a
movdptr,#keyin
movxa,@dptr
jnbacc.3,
2
L
jnbacc.2,
3
L
jnbacc.0,
33
L
jnbacc.1,
4
L
movkeysize,#39h
sjmp
4
L
2
L:movkeysize,#77h
Sjmp
4
L
3
L:movkeysize,#7ch
Sjmp
4
L
33
L:movkeysize,#5eh
4
L:movdptr,#outseg
mova,keysize
movx@dptr,a
movdptr,#outbit
mova,#00000100b
movx@dptr,a
mova,keysize
cjnea,#5eh,
5
L
clr
0
f
clr
1.0
p
sjmp
55
L
5
L:jb
0,1
fL
55
L:cjnea,#77h,
555
L
callzzzb
sjmp
1
L
555
L:cjnea,37ch,
1
L
callfzzb
sjmp
1
L
zzzb:cjne
0
r,#33h,
6
L
mov
0
r,#30h
sjmp
8
L
6
L:inc
0
r
sjmp
8
L
fzzb:cjne
0
r,#30h,
7
L
mov
0
r,#33h
sjmp
8
L
7
L:dec
0
r
8
L:mova,@
0
r
movdptr,#porta
movx@dptr,a
acalldelay
ret
org0200h
zd:setb
0
f
setb
1.0
p
reti;
delay:mov
5
r,#00h
11
L:mov
0
r,#00h
22
L:djnz
0
r,
22
L
Djnz
55,22
rL
Ret
end |