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

📄 paratest.asm

📁 详细介绍了C语言开发DSP嵌入式系统
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;OCM12864模块测试程序**************************
;完成时间2008.11.28
;制作人:hdzhangx
;**********************************************
D_I	EQU	P2.0				;Data or Instrument Select,H:写数据,L:写指令
R_W	EQU	P2.1				;Write or Read,H:read,L:write
E	EQU	P2.7				;读写使能
CS1	EQU	P2.2				;CS1=H,选择左半屏
CS2	EQU	P2.3
				                ;CS2=H,选择右半屏
RESET	EQU	P2.4				;Lcm reset,低有效

DISP_X	EQU	30H
DISP_Y	EQU	31H
DISP_Z	EQU	32H
LONG	EQU	33H
WIDE	EQU	34H
DATA1_WR	EQU	35H
DATA2_WR	EQU	36H
COUNTER1	EQU	37H
COUNTER2	EQU	38H
COUNTER3	EQU	39H
;**********************************************
		ORG	0000H
		AJMP	MAIN
		ORG	0100H
MAIN:		MOV	SP,#40H
		CLR	RESET
		NOP
		NOP
		NOP
		SETB	RESET
                MOV	DISP_Z,#0C0H
;*************汉字位置*************************
                SETB	CS1
		clr	CS2

		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#30H
		MOV	WIDE,#02H
		MOV	DPTR,#para11
		LCALL	para_DISP
                lcall   para1
                
		MOV	DISP_X,#0BaH
		MOV	DPTR,#para21
		LCALL	para_DISP
                lcall   para2
                
		MOV	DISP_X,#0BcH
		MOV	DPTR,#para31
		LCALL	para_DISP
                lcall   para3                
                
		MOV	DISP_X,#0BeH
		MOV	DPTR,#para41
		LCALL	para_DISP
                lcall   para4
                
                ljmp    main
;**************************参数区域赋值********************
;                mov     r0,#40h
;                mov     r6,#08h
;                mov     a,#0
;loopnum:        mov     @r0,a
;                inc     a
;                inc     r0
;                djnz    r6,loopnum
;****************************


;----------------------------------------------
num_DISP:	LCALL	DISP			;显示LONGxWIDE大小的图形,本例为汉字
		MOV	COUNTER1,WIDE
num_DISP1:	LCALL	WR_ZB
		MOV	COUNTER2,LONG
num_DISP2:	CLR	A
		MOVC	A,@A+DPTR
		LCALL	WR_DATA
		INC	DPTR
		DJNZ	COUNTER2,num_DISP2
		INC	DISP_X
		DJNZ	COUNTER1,num_DISP1
		RET

                ljmp main
;---------------------------写光标---------------------------
para_DISP:	LCALL	DISP			;显示LONGxWIDE大小的图形,本例为光标
		MOV	COUNTER1,WIDE
para_DISP1:	LCALL	WR_ZB
		MOV	COUNTER2,LONG
para_DISP2:	CLR	A
		MOVC	A,@A+DPTR
		LCALL	WR_DATA
		INC	DPTR
		DJNZ	COUNTER2,para_DISP2
		INC	DISP_X
		DJNZ	COUNTER1,para_DISP1
		RET


;**************************************************************
WR_ZB:		MOV	A,DISP_X                 ;写坐标
		LCALL	WR_INT
		MOV	A,DISP_Z
		LCALL	WR_INT
		MOV	A,DISP_Y
		LCALL	WR_INT
		RET
;----------------------------------------------
DISP:		MOV	A,#3EH
		LCALL	WR_INT
		MOV	A,#3FH
		LCALL	WR_INT
		RET
;**********************************************
WR_INT:		LCALL	CHE_BUSY		;WRITE	INSTRUCTION
		CLR	D_I
		CLR	R_W
		MOV	P0,A
		NOP
		SETB	E
		NOP
		NOP
		CLR	E
		RET
;----------------------------------------------
WR_DATA:	LCALL	CHE_BUSY		;WRITE	DATA
		SETB	D_I
		CLR	R_W
		MOV	P0,A
		NOP
		SETB	E
		NOP
		NOP
		CLR	E
		RET
;----------------------------------------------
CHE_BUSY:	CLR	D_I			;CHECK	STATIU
		SETB	R_W
		ANL	p0,#0B0H
		ORL	p0,#80H
		NOP
		SETB	E
		JB	p0.7,$
		JB	p0.4,$
		CLR	E
		RET

;*********************参数显示缓冲区********************
para1:		SETB	CS2
	        CLR	CS1
		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#08H
		MOV	WIDE,#02H

;************测试********************************************
                mov     r7,#08h
                mov     r0,#40h
loop:           mov     a,@r0
num0:           cjne    a,#0,num1
                mov     dptr,#numtab0
                lcall   num_disp
;*************************
                MOV	DISP_X,#0B8H
		MOV	DISP_Y,#48H
		MOV	LONG,#08H
		MOV	WIDE,#02H
;***********************
                inc     r0
                djnz    r7,loop
                sjmp    para1
num1:           cjne    a,#1,num2
                mov     dptr,#numtab1
                lcall   num_disp
;*********************
                MOV	DISP_X,#0B8H        ;该句必须要
		MOV	DISP_Y,#50H
		MOV	LONG,#08H
		MOV	WIDE,#02H
;*********************
                inc     r0
                djnz    r7,loop
                sjmp    para1
num2:           cjne    a,#2,num3
                mov     dptr,#numtab2
                lcall   num_disp
;*******************
                MOV	DISP_X,#0B8H
		MOV	DISP_Y,#58H
		MOV	LONG,#08H
		MOV	WIDE,#02H
;********************
                inc     r0
                djnz    r7,loop
                sjmp    para1
num3:           cjne    a,#3,num4
                mov     dptr,#numtab3
                lcall   num_disp
;********************
                MOV	DISP_X,#0B8H
		MOV	DISP_Y,#60H
		MOV	LONG,#08H
		MOV	WIDE,#02H
;********************
                inc     r0
                djnz    r7,loop
                sjmp    para1
num4:           cjne    a,#4,num5
                mov     dptr,#numtab4
                lcall   num_disp
;********************
                MOV	DISP_X,#0B8H
		MOV	DISP_Y,#68H
		MOV	LONG,#08H
		MOV	WIDE,#02H
;********************
                inc     r0
                djnz    r7,loop1
                ljmp    para1
loop1:          ljmp    loop

num5:           cjne    a,#5,num6
                mov     dptr,#numtab5
                lcall   num_disp
;**********************
                MOV	DISP_X,#0B8H
		MOV	DISP_Y,#70H
		MOV	LONG,#08H
		MOV	WIDE,#02H
;******************
                inc     r0
                djnz    r7,loop2
                ljmp    para1
loop2:          ljmp    loop

num6:           cjne    a,#6,num7
                mov     dptr,#numtab6
                lcall   num_disp
;*******************
                MOV	DISP_X,#0B8H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -