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

📄 inputpara.asm

📁 详细介绍了C语言开发DSP嵌入式系统
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;*******************************************
;12-16  基本调试成功
;r5列扫描初值
;r6扫描列号
;r3键值
;r0显示参数首地址
;r2坐标计算时的键值保护寄存器,可以使用堆栈完成该项功能。
;r7显示参数字节个数
;28h
;f0=1,进入参数输入界面
;r4 键入参数时或者删除键时,坐标disp_y存放单元
;20H,页码保存单元(字节)
;7fh,行号保存单元(可以用r2,作为换行计数单元)
;********************************************
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
	mov r0,#50h
        lcall clears
        ;mov r4,#40h             ;用户参数输入时的DISP_Y坐标保存单元
        ;lcall start
        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 r4,#40h             ;用户参数输入时的DISP_Y坐标保存单元
	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
        push a
waitrl: lcall delay3
        lcall wkeyr
        jnz waitrl      ;不等于0,见没有释放,转到等待键释放
        pop a
        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:    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:	jb f0,ninput1		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput1:;lcall clears           ;number input 1
	;lcall userpara
	mov a,r3
	mov @r0,a
	;inc r0
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

num2:	jb f0,ninput2		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput2:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret
NUM3:   jb f0,ninput3		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput3:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

NUM4:   jb f0,ninput4		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput4:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter
        inc r0
        MOV P1,#0F0H
        ret
NUM5:   jb f0,ninput5		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput5:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

NUM6:   jb f0,ninput6		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput6:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

NUM7:   jb f0,ninput7		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput7:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

NUM8:   jb f0,ninput8		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput8: ;lcall clears
	;lcall userpara
	mov a,r3
	mov @r0,a
	;inc r0
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

NUM9:   jb f0,ninput9		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput9:mov a,r3
	mov @r0,a
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

NUM0:   jb f0,ninput0		;f0=1,进入参数输入界面
	MOV P1,#0F0H
	ret

ninput0: ;lcall clears
	;lcall userpara
	mov a,r3
	mov @r0,a
	;inc r0
	lcall  inpara           ;输入参数显示,input parameter display
        inc r0
        MOV P1,#0F0H
        ret

func1:  setb f0
        lcall clears
        lcall userpara
        mov r0,#50h             ;12-17,输入的参数保存到50h为首的地址单元中
        MOV P1,#0F0H
        RET


func2:  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

func3:  mov disp_x,#0b8h
        lcall clrcur
        clr c
	mov disp_x,#0b8h
	mov r2,a                      ;暂存键值
	mov a,disp_y
	subb a,#08h
	mov disp_y,a
        mov r4,disp_y                   ;删除数字后,下次显示数字时的坐标
	mov a,r2
	lcall cursor
	ret

func4:                                  ;换行键,可以用r2,作为换行计数单元
        inc 7fh
        push a
        mov a,7fh
        cjne a,#04h,clr7f
        mov 7fh,#00h
clr7f:  pop a
        ret

func5:
func6:

;*****************键释放wait key released*************************

wkeyr:  mov p1,#0f0h
        mov a,p1
        orl a,#0fh
        cpl a                   ;p1.~p1.7取反后为全0,说明键释放
        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



;***********************用户参数值输入************
inpara:	        SETB	CS2			;输入参数子程序
		clr	CS1

		MOV	DISP_X,#0B8H
		MOV	DISP_Y,r4
		MOV	LONG,#08H
		MOV	WIDE,#02H

		lcall   ipd
                ;lcall   cursor

		;MOV	DISP_X,#0BaH
		;MOV	DISP_Y,#40H
		;lcall   ipd

		;MOV	DISP_X,#0BcH
		;MOV	DISP_Y,#40H
		;lcall   ipd

		;MOV	DISP_X,#0BeH
		;MOV	DISP_Y,#40H
		;lcall   ipd

                ret

;********************第一行参数输入显示*********************
ipd:            clr cs1
                setb cs2

⌨️ 快捷键说明

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