📄 xsjp6.asm
字号:
jnz k170 ;是否减过最低显示位
mov 41h,#27h ;减过最低显示位回到最高显示位
ajmp k170
k170: mov r0,4ah ;当前显示指针存r0
mov a,41h
xrl a,#27h ;减一后的显示指针是否指向最高显示位
jnz kw3
mov a,5bh
xrl a,#00h
jnz k171
ljmp kw
k171: mov 42h,#10h ;减一后的显示指针是指向最高显示位,当前显示"灭"
mov @r0,42h
kw3: mov a,41h
inc a
xrl a,5bh ;是否第一次按k17
jz kw12
mov a,41h ;不是第一次按k17
inc a
subb a,5bh ;
jnc kw
mov 42h,#10h
kw12: mov @r0,42h ;当前显示位是显示"灭"
mov r0,41h
mov @r0,#1bh
mov 42h,@r0
ljmp kl0
kw:
mov @r0,42h
mov r0,41h
mov 42h,@r0
ljmp kl0
;**************************
k18: lcall xshg
mov r0,41h
mov @r0,#13h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
;**************************
k21: lcall xshg
mov r0,41h
mov @r0,#04h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k22: lcall xshg
mov r0,41h
mov @r0,#05h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k23: lcall xshg
mov r0,41h
mov @r0,#06h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k24: lcall xshg
mov r0,41h
mov @r0,#0fh
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k25: lcall xshg
mov r0,41h
mov @r0,#1ah
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k26: lcall xshg
mov r0,41h
mov @r0,#12h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k27: lcall xshg
mov r0,41h
mov @r0,#1fh
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k28: lcall xshg
mov r0,41h
mov @r0,#11h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
;********************
k31: lcall xshg
mov r0,41h
mov @r0,#01h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k32: lcall xshg
mov r0,41h
mov @r0,#02h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k33: lcall xshg
mov r0,41h
mov @r0,#03h
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
;****************************
k34: lcall xshg
mov r0,41h
mov @r0,#0ah
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k35: lcall xshg
mov r0,41h
mov @r0,#0bh
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k36: lcall xshg
mov r0,41h
mov @r0,#0ch
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k37: lcall xshg
mov r0,41h
mov @r0,#0dh
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
k38: lcall xshg
mov r0,41h
mov @r0,#0eh
lcall xs
mov 6bh,#00h ;清除键"-"记忆
mov 5bh,#00h ;显示数据末位指针清零
ljmp kl0
;********************************************
xshg:
push 0
mov a,41h ;
dec a ;当前显示位减一位
xrl a,50h ;当前显示位减一位是否等于"-"显示位
jz csz0
mov r0,41h ;
dec r0 ;当前显示位减一位
mov a,@r0
xrl a,#10h ;当前显示位减一位是否等于"灭"
jnz csz
mov @r0,#1bh ;"-"值送显示
ljmp csz
csz0: mov r0, 50h ;当前显示位减一位是等于"-"显示位
mov @r0,#1bh ;"-"值送显示
dec 50h ;"-"值显示位减一
mov a,#1fh ;"-"值显示位是否减过最低显示位20h
xrl a,50h
jnz csz
mov 50h,#27h ;"-"值显示位减过最低显示位20h,指针指向最高显示位27h
csz:
pop 0
ret
xshg1:
push 0
mov r0, 50h
mov @r0,#1bh ;显示"-"
pop 0
csz1: ret
;*********************************************
xs: dec 41h
mov a,41h
xrl a,#1fh
jz pd
mov r0,41h
mov 42h,@r0
ret
pd: mov 41h,#27h
mov r0,41h
mov 42h,@r0
ret
;*************************************************************
; 时钟中断0 程序
;*************************************************************
it00: push acc ;A入栈
push 0 ;R0入栈
push dph ;DPTR 入栈
push dpl
JnB 6EH,IT001
mov r0,41h
MOV @r0,42H ;显示输入的信号与灭构成一闪一灭
ajmp it002
it001: mov r0,41h
MOV 42h,@r0
MOV @r0,#10H ;显示灭
IT002: cpl 6eh ;取反6eh闪动开关(0:开 1:关)
int02: pop dpl ;出栈
pop dph
pop 0
pop acc
reti
;***********************************************************
drr10: mov 23h,#10h
mov 24h,#10h
mov 25h,#10h
mov 26h,#10h
ret
drr: mov 20h,#10h
mov 21h,#10h
mov 22h,#10h
lcall drr10
ret
dirv: mov r0,#01h
mov r1,#27h
di1: mov dptr,#0dfffh ;8255控制口
mov a,#81h ;8255控制方式为81h: C口(上)出(下)入,B口出,A口出
movx @dptr,a
mov a,5bh ;C口状态存5bh
mov dptr,#0dffeh ;8255C口地址为0dffeh
movx @dptr,a
mov dptr,#0dffch ;8255A口
mov a,#00h ;
movx @dptr,a
dii: mov dptr,#0dffdh ;8255B口
mov a,r0
movx @dptr,a ;位选
mov dptr,#table ;查段选表
mov a,@r1
movc a,@a+dptr
mov dptr,#0dffch
movx @dptr,a ;段选
mov r7,#03h
di2: mov r6,#0ffh
di3: djnz r6,di3
djnz r7,di2
dec r1
mov a,r0
jb acc.7,di4
rl a
mov r0,a
ajmp dii
di4: ret
table:
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
; "0" "1" "2" "3" "4" "5" "6" "7"
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
; "8" "9" "a" "b" "c" "d" "e" "f"
db 00h,0eh,76h,0f0h,38h,80h,46h,40h
; "灭""J" "H" "k" "L" "." "+" "-"
db 0f3h,6eh,3dh,08h,3eh,37h,5ch,087h
; "p." "y" "G" "-" "U" "n" "o""i"
db 0bfh,86h, 0dbh,0cfh,0e6h,0edh,0fdh,87h
; "0." "1." "2." "3." "4." "5." "6." "7."
db 0ffh,0efh,0f7h,0fch,0b9h,0deh,0f9h,0f1h
; "8." "9." "a." "b." "c." "d." "e." "f."
db 00h,8eh,0f6h,0f0h,0b8h,80h,46h,40h
; "灭""J." "H." "k" "L." "." "+" "-"
db 0f3h,0eeh,0bdh,88h,0beh,0b7h,0dch,087h
; "p." "y." "G." "-." "U." "n." "o.""i"
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -