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

📄 perfect.asm

📁 详细介绍了C语言开发DSP嵌入式系统
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;***********************************************
;r5列扫描初值
;r6扫描列号
;r3键值
;r0显示参数首地址
;r2坐标计算时的键值保护寄存器
;r7显示参数字节个数
;20H页码保存单元(字节)
;28h
;f0=1,进入参数输入界面
;r4 键入参数是,坐标disp_y存放单元
;********************************************
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
        LJMP MAIN
        ORG 0003H
        LJMP KEYVAL


        ORG 0030H
MAIN:   MOV SP,#3AH
        SETB EA
        SETB EX0
        SETB IT0
        lcall clears
        lcall start
        mov r4,#40h             ;用户参数输入时的DISP_Y坐标保存单元
        MOV  20H,#00H           ;页码保存单元
;********************模拟显示参数**************
        mov  a,#00h
        mov  r1,#50h
        mov r4,#06h
loopp1: mov  @r1,a
        inc a
        inc r1
        djnz r4,loopp1

        mov  a,#00h
        mov  r1,#56h
        mov r4,#06h
loopp2: mov  @r1,a
        inc a
        inc r1
        djnz r4,loopp2

        mov  a,#00h
        mov  r1,#5ch
        mov r4,#06h
loopp3: mov  @r1,a
        inc a
        inc r1
        djnz r4,loopp3

        mov  a,#00h
        mov  r1,#62h
        mov r4,#06h
loopp4: mov  @r1,a
        inc a
        inc r1
        djnz r4,loopp4
;********************模拟显示参数**************

        MOV  P1,#0F0H
        SJMP $


KEYVAL: MOV r5,#0F7H    ;送扫描初值
        MOV r6,#00H     ;扫描列号

LK:     MOV A,r5
        MOV P1,A        ;扫描值送入p1口
        MOV A,P1        ;读出p1口数据判断键值

        JB ACC.7,LONE   ;第一行 P1.7
        MOV A,#01H
        AJMP LKP

LONE:   JB ACC.6,LTWO    ;第二行 P1.6
        MOV A,#05H
        AJMP LKP

LTWO:   JB ACC.5,LTHR   ;第三行  P1.5
        MOV A,#09H
        AJMP LKP

LTHR:   JB ACC.4,NEXT   ;第四行  P1.4
        MOV A,#0dH

LKP:    ADD A,r6
        MOV R3,A        ;键值存入R3中
        LCALL KEYDW
        RETI

NEXT:   INC r6
        MOV A,r5
        JNB ACC.0,KND
        RR A
        MOV r5,A
        AJMP LK
KND:    MOV P1,#0F0H
        RETI

;键处理子程序
KEYDW:  MOV A,R3
        CLR C
        RLC A
        MOV DPTR,#TAB
        JMP @A+DPTR
;TAB:
;***********************键盘处理方法2********************
;KEYDW:  MOV A,R3
;        CJNE A,#09H,KEYA
;        AJMP NUM
;KEYA:   JC NUM
;KEY1:   MOV DPTR,#TAB
;        CLR C
;        SUBB A,#0AH
;        RL A
;        JMP @A+DPTR
;**********************键盘处理方法2************************
TAB:    db   00h,01h
        AJMP NUM1
        AJMP NUM2
        AJMP NUM3
        AJMP NUM4
        AJMP NUM5
        AJMP NUM6
        AJMP NUM7
        AJMP NUM8
        AJMP NUM9
        AJMP NUM0
        AJMP FUNC1
        AJMP FUNC2
        AJMP FUNC3
        AJMP FUNC4
        AJMP FUNC5
        AJMP FUNC6

NUM1:   MOV P1,#0F0H
        RET

NUM2:   MOV P1,#0F0H
        RET

NUM3:   MOV P1,#0F0H
        RET

NUM4:   MOV P1,#0F0H
        RET

NUM5:   MOV P1,#0F0H
        RET

NUM6:   MOV P1,#0F0H
        RET

NUM7:   MOV P1,#0F0H
        RET

NUM8:   MOV P1,#0F0H
        RET

NUM9:   MOV P1,#0F0H
        RET

NUM0:   MOV P1,#0F0H
        RET
;****************第一功能键,系统参数显示键*************************
FUNC1:  push a
        inc 20H
        mov a,20h
scr1:	cjne a,#01h,scr2	;页码保存单元内容为1,显示第一屏,否则显示第二屏
        pop a
        lcall clears
	lcall firsts
        ret
scr2:	cjne a,#02h,rets1     ;scr3	;页码保存单元内容为2,显示第二屏,否则显示第三屏
        pop a
        lcall clears
	lcall start
        ret             ;做实验   暂时改成  初始界面
;scr3:	cjne 20h,#03h,rets1	;页码保存单元内容为3,显示第三屏,否则到返回第一屏子程序
;	mov 20h,#00h
;	lcall threes


rets1:  pop a
        mov 20h,#00h		;页码内容清零,从第一页开始显示return to screen1
        MOV P1,#0F0H
        RET

        lcall firsts
        MOV P1,#0F0H
        RET
;***************************删除键12-7*******************************
FUNC2:          MOV	DISP_Z,#0C0H
                SETB	CS2
		clr	CS1
		dec disp_x		;MOV	DISP_X,#0B8H
		dec disp_y		;MOV	DISP_Y,#40H
		MOV	LONG,#08H
		MOV	WIDE,#02H
		MOV	DPTR,#del
                lcall  disp
                reti
        ;MOV  R6,A
        lcall firsts
        MOV P1,#0F0H
        RET

FUNC3:  ;MOV  R6,A
        MOV P1,#0F0H
        RET
FUNC4:  ;MOV  R6,A
        MOV P1,#0F0H
        RET
FUNC5:  ;MOV  R6,A
        MOV P1,#0F0H
        RET
FUNC6:  ;MOV  R6,A
        MOV P1,#0F0H
        RET

NUM:    MOV  R6,A
        MOV P1,#0F0H
        RET


;***********************初始界面****************
;初始界面
start:		SETB	CS1
		CLR	CS2
		MOV	DISP_X,#0B9H
		MOV	DISP_Y,#40H
		MOV	LONG,#40H
		MOV	WIDE,#02H
		MOV	DPTR,#HZ11
		LCALL	para_DISP
		MOV	DISP_X,#0BbH
		MOV	DPTR,#HZ21
		LCALL	para_DISP
		MOV	DISP_X,#0BdH
		MOV	DPTR,#HZ31
		LCALL	para_DISP
		;MOV	DISP_X,#0BeH
		;MOV	DPTR,#HZ41
		;LCALL	CHN_DISP

		CLR	CS1
		SETB	CS2
		MOV	DISP_X,#0B9H
		MOV	DISP_Y,#40H
		MOV	LONG,#40H
		MOV	WIDE,#02H
		MOV	DPTR,#HZ12
		LCALL	para_DISP
		MOV	DISP_X,#0BbH
		MOV	DPTR,#HZ22
		LCALL	para_DISP
		MOV	DISP_X,#0BdH
		MOV	DPTR,#HZ32
		LCALL	para_DISP
                ret

;**********************清屏***********************


clears:         MOV	DISP_Z,#0C0H
                SETB	CS1
		CLR	CS2
		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#40H
		MOV	WIDE,#02H
		MOV	DPTR,#clear
		LCALL	para_DISP
		MOV	DISP_X,#0BAH
		MOV	DPTR,#clear
		LCALL	para_DISP
		MOV	DISP_X,#0BCH
		MOV	DPTR,#clear
		LCALL	para_DISP
		MOV	DISP_X,#0BEH
		MOV	DPTR,#clear
		LCALL	para_DISP

		CLR	CS1
		SETB	CS2
		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#40H
		MOV	WIDE,#02H
		MOV	DPTR,#clear
		LCALL	para_DISP
		MOV	DISP_X,#0BAH
		MOV	DPTR,#clear
		LCALL	para_DISP
		MOV	DISP_X,#0BCH
		MOV	DPTR,#clear
		LCALL	para_DISP
		MOV	DISP_X,#0BEH
		MOV	DPTR,#clear
		LCALL	para_DISP

		ret

;***********************第一屏系统参数*******************
firsts:		;MOV	SP,#70H
                setb    rs0
                clr     rs1
		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

		MOV	DISP_X,#0BaH
		MOV	DPTR,#para21
		LCALL	para_DISP

		MOV	DISP_X,#0BcH
		MOV	DPTR,#para31
		LCALL	para_DISP

		MOV	DISP_X,#0BeH
		MOV	DPTR,#para41
		LCALL	para_DISP

;***********************系统参数值************
                SETB	CS2
		clr	CS1

		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#08H
		MOV	WIDE,#02H
		lcall   paraf

		MOV	DISP_X,#0BaH
		MOV	DISP_Y,#40H
		lcall   paras

		MOV	DISP_X,#0BcH
		MOV	DISP_Y,#40H
		lcall   parat

		MOV	DISP_X,#0BeH
		MOV	DISP_Y,#40H
		lcall   parafr

                ret             ;ljmp    main       12月5日改

;*********************12-3********************
;***************第一行参数显示*****************
paraf:		mov     r7,#06h
                mov     r0,#50h
loopf:          mov     a,@r0


numf0:          cjne    a,#0,numf1
                mov     dptr,#numtab0
                lcall   para_disp
;*************************

		lcall	parazbf

;***********************
                inc     r0
                djnz    r7,loopf
                ret

numf1:         cjne    a,#1,numf2
                mov     dptr,#numtab1
                lcall   para_disp
;*********************

		lcall	parazbf

;*********************
                inc     r0
                djnz    r7,loopf
                ret

numf2:          cjne    a,#2,numf3
                mov     dptr,#numtab2
                lcall   para_disp
;*******************

		lcall	parazbf

;********************
                inc     r0
                djnz    r7,loopf
                ret

numf3:         cjne    a,#3,numf4
                mov     dptr,#numtab3
                lcall   para_disp
;********************

⌨️ 快捷键说明

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