📄 yibupstc9.asm
字号:
mov r1, #9eh ;cun 15
mov @r1, a
;
mov r1, #0beh
acall yiwei
inc r1
acall yiwei
mov a, 29h
mov r1, #9fh ;cun 16
mov @r1, a
;
ret
yiwei: clr cy
mov a, @r1
rlc a
rlc a
mov b, a ;暂存
mov a, 29h
rlc a
mov 29h, a ;暂存在29h 1
;
mov a, b
rlc a
rlc a
mov b, a ;暂存
mov a, 29h
rlc a
mov 29h, a ;暂存在29h 2
;
mov a, b
rlc a
rlc a
mov b, a ;暂存
mov a, 29h
rlc a
mov 29h, a ;暂存在29h 3
;
mov a, b
rlc a
rlc a
mov b, a ;暂存
mov a, 29h
rlc a
mov 29h, a ;暂存在29h 4
ret
;************************************************
;从FLASH读到的字模数据直接存储到ram 2000h-21ffh
cunram: nop ;存储到ram
;78h-- 79h-- 7ah-- 7bh-- 7ch-- 7dh--7eh--7fh--
clr 78h ;RS485 0--JIESHOU
SETB 79h ;ROM-CE'
clr 7ah ;RAM-CE2'
clr 7bh ;RAM-CE1'
CLR 7ch ;A19
CLR 7dh ;A18
CLR 7eh ;A17
CLR 7fh ;A16
;mov 2fh,#0fh ;位选控制字
mov a, 2fh
lcall send_kz
mov a, 5ch ;第几个字标志
mov dpl, a
mov a, 5dh ;第几个字标
mov dph, a
;
mov r1, #80h
xzk: mov a, @r1
movx @dptr, a
inc r1
inc dptr
cjne r1, #0a0h, xzk
mov r1, #80h
;**********把刚存入RAM的数据读回内部********校验!!!
jysj: nop
mov a, 5ch ;第几个字标志
mov dpl, a
mov a, 5dh ;第几个字标
mov dph, a
mov r1, #0a0h
jydu: movx a, @dptr
mov @r1, a
inc r1
inc dptr
cjne r1, #0c0h, jydu
mov r1, #80h
nop
;************校验!!!
ret
;************************************************
;计算字摸地址(16)
jsdizhi: nop
;setb rs0
;setb rs1 ;切换积存器组
mov a, r3 ;41h
clr cy
subb a, #0a0h
dec a
mov r0, a
mov a, r2 ;40h
clr cy
subb a, #0a0h
dec a
mov b, #5eh
mul ab ;无符号8位乘法/低位在a,高位在b
;/进位标志CY总被清0/益处标志位OV与乘积有关,小于FFH为0否则为1
add a, r0 ;无符号加法
jnc bjb
inc b
bjb: nop
mov r3, a
mov r2, b ;被乘数
mov r6, #00h
mov r7, #20h ;乘数
;双字节无符号乘法
;被乘数在R2,R3中。乘数在R6,R7中
;乘积在R2,R3,R4,R5中
;影响资源:PSW、A、B、R2-R7
mov a, r3 ;js r3*r7
mov b, r7
mul ab
mov r4, b ;zc bf j
mov r5, a
mov a, r3 ;js r3*r6
mov b, r6
mul ab
add a, r4 ;lj bf j
mov r4, a
clr a
addc a, b
mov r3, a
mov a, r2 ;js r2*r7
mov b, r7
mul ab
add a, r4 ;lj bf j
mov r4, a
mov a, r3
addc a, b
mov r3, a
clr a
rlc a
xch a, r2 ;js r2*r6
mov b, r6
mul ab
add a, r3 ;lj bf j
mov r3, a
mov a, r2
addc a, b
mov r2, a
nop
ret
;*****************************
;ram内部数据处理,为显示程序做准备
nbsjcl: nop ;(上排))
clr 78h ;RS485 0--JIESHOU
SETB 79h ;ROM-CE'
clr 7ah ;RAM-CE2'
clr 7bh ;RAM-CE1'
CLR 7ch ;A19
CLR 7dh ;A18
CLR 7eh ;A17
CLR 7fh ;A16
;mov 2fh,#0fh ;位选控制字
mov a, 2fh
lcall send_kz ;位选RAM
;***************************************
;第1行
mov r1, #00h ;第1行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第2行
mov r1, #01h ;第2行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第3行
mov r1, #02h ;第3行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第4行
mov r1, #03h ;第4行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第5行
mov r1, #04h ;第5行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第6行
mov r1, #05h ;第6行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第7行
mov r1, #06h ;第7行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第8行
mov r1, #07h ;第8行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第9行
mov r1, #08h ;第9行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第10行
mov r1, #09h ;第10行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第11行
mov r1, #0ah ;第11行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第12行
mov r1, #0bh ;第12行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第13行
mov r1, #0ch ;第13行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第14行
mov r1, #0dh ;第14行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第15行
mov r1, #0eh ;第15行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;第16行
mov r1, #0fh ;第16行
lcall hzzb_8 ;数据从外存移入内存,按照8个字标准
lcall xszb_8 ;显示缓冲数据准备
;
ret
;****************************************************************************
;数据从内到外,按照8字标准,为显示程序直接读取数据
xszb_8: nop
mov r0, #30h ;数据读取指针
mov a, r1 ; 行数
clr cy
rlc a
rlc a
rlc a
rlc a
mov dpl, a ;数据存储指针
mov dph, #30h ;数据存储指针 /显示缓冲3000-30ffh
;
xzloop: mov a, @r0
movx @dptr, a
inc r0
inc dptr
cjne r0, #40h, xzloop
;
mov r0, #30h
mov a, r1 ; 行数
clr cy
rlc a
rlc a
rlc a
rlc a
mov dpl, a ;数据存储指针
mov dph, #30h ;数据存储指针 /显示缓冲3000-30ffh
dcloop: movx a, @dptr
mov @r0, a
inc r0
inc dptr
cjne r0, #40h, dcloop
;校验!!
mov r0, #30h
nop
nop
;
ret
;******
;数据从外存移入内存,按照8个字标准,30-3fh为临时数据存储
hzzb_8: nop
clr cy
mov a, r1
rlc a
mov b, a ;指针处理
;********
mov dptr, #2000h ;第1个字
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 30h, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 31h, a
;
mov dptr, #2020h ;第2个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 32h, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 33h, a
;
mov dptr, #2040h ;第3个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 34h, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 35h, a
;
mov dptr, #2060h ;第4个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 36h, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 37h, a
;
mov dptr, #2080h ;第5个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 38h, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 39h, a
;
mov dptr, #20a0h ;第6个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 3ah, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 3bh, a
;
mov dptr, #20c0h ;第7个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 3ch, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 3dh, a
;
mov dptr, #20e0h ;第8个字
mov a, b
mov a, dpl
add a, b
mov dpl, a
movx a, @dptr
acall fazhang
mov 3eh, a
inc dptr
mov a, b
add a, dpl
movx a, @dptr
acall fazhang
mov 3fh, a
ret
;
fazhang: nop
mov c, acc.0
mov 0fh, c
mov c, acc.1
mov 0eh, c
mov c, acc.2
mov 0dh, c
mov c, acc.3
mov 0ch, c
mov c, acc.4
mov 0bh, c
mov c, acc.5
mov 0ah, c
mov c, acc.6
mov 09h, c
mov c, acc.7
mov 08h, c
mov a, 21h
ret
;*****************************
;ram内部数据处理,为显示程序做准备
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -