⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yibupstc9.asm

📁 LED显示屏驱动程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -