📄 test.asm
字号:
;P1 EQU DB(N) ;Hardware setting
;P3.6 EQU RS
;P3.7 EQU R/W
;P3.5 EQU E
;R0 时间延迟寄存器
;R1 显示采样数据存储器首地址寄存器
;R2 指令、数据码寄存器
;R3 时间延迟寄存器
;R4 时间延迟寄存器
;R5 时间延迟寄存器
;R6 VFD显示字符个数寄存器
;R7 循环记数的个数寄存器
;10H VFD固定位数(20位)寄存器
;20H-24H 键盘设定电流值存储器(可VFD显示的转化值)5位
;30H-34H 采集电流值存储器(可VFD显示的转化值} 5位
;40H-44H 采集电压值存储器(可VFD显示的转化值} 5位
;50H-54H 负载电阻精确值存储器(可VFD显示的转化值} 5位
ORG 0000H
AJMP START
START: ORG 0100H ;以下为调用测试部分,采样值均为假设值
MOV 20H, #20H
MOV 21H, #20H
MOV 22H, #31H
MOV 23H, #32H
MOV 24H, #33H ;键盘设定调用测试123
MOV 30H, #20H
MOV 31H, #20H
MOV 32H, #31H
MOV 33H, #32H
MOV 34H, #33H ;采集电流调用测试 123
MOV 40H, #20H
MOV 41H, #20H
MOV 42H, #31H
MOV 43H, #32H
MOV 44H, #33H ;采集电压调用测试123
MOV 50H, #20H
MOV 51H, #20H
MOV 52H, #31H
MOV 53H, #32H
MOV 54H, #33H ;负载电阻调用测试 123
AJMP STAR
STAR: ACALL PR3 ;Initializing
MOV R2,#0FH ;Flash mode 动态显示模式 R2为控制命令寄存器
ACALL PR1 ;调用指令控制
MOV R2,#85H ;Add(1,6)第一行第6个位置开始显示
MOV DPTR,#TAB ;Character data
MOV R6,#0AH ;count 显示的字母个数
ACALL PR4 ;Display"WELCOME!!" 调用显示控制
MOV R2,#0C2H ;Add(2.1)第2行第三个位置开始显示
MOV R6,#12H ; count 显示的字母个数,R6为显示字数寄存器
ACALL PR4 ; display "WAITING INPUT"
ACALL TIM1 ;时间延迟
MOV 10H,#14H ;displacement count 20个位置数量
RLOOP: MOV R2,#1CH ;right display
ACALL PR1 ;调用指令控制
ACALL TIM2
DJNZ 10H,RLOOP ;loop 判断整体20个位置是否移动完全
MOV R2,#01H ;clear screen
ACALL PR1
STAR1: MOV R2,#0EH ;normal display mode 正常显示模式
ACALL PR1
MOV R2,#80H ;add(1.1) 第一行第1个位置显示
MOV DPTR,#TAB1 ;character tab
MOV R6,#04H ;count 显示字体数量
ACALL PR4 ;display"SET:"
ACALL TIM3
MOV R2,#84H ;add(1.5) 第一行第5个位置显示
MOV R1,#20H ;取键盘设定值的存储器20H首地址
MOV R6,#05H ;count 显示字体数量 5位
ACALL PR5 ;display键盘设定值
ACALL TIM3
MOV R2,#8AH ;add(1.11) 第一行第11个位置显示
MOV DPTR,#TAB2 ;character tab
MOV R6,#04H ;count 显示字体数量
ACALL PR4 ;display"OUT:"
ACALL TIM3
MOV R2,#8EH ;add(1.15) 第一行第15个位置显示
MOV R1,#30H ;取采样电流值的存储器30H首地址
MOV R6,#05H ;count 显示字体数量 5位
ACALL PR5 ;display采样电流输出
ACALL TIM3
MOV R2,#0C0H ;Add(2.1) 第二行第1个位置显示
MOV DPTR,#TAB3 ;character tab
MOV R6,#04H ;count 显示字体数量
ACALL PR4 ;display" VOL:"
ACALL TIM3
MOV R2,#0C4H ;add(2.5) 第二行第5个位置显示
MOV R1,#40H ;取采样电压值的存储器40H首地址
MOV R6,#05H ;count 显示字体数量 5位
ACALL PR5 ;display采样电电压输出
ACALL TIM3
MOV R2,#0CAH ;Add(2.11) 第二行第11个位置显示
MOV DPTR,#TAB4 ;character tab
MOV R6,#04H ;count 显示字体数量
ACALL PR4 ;display" RES:"
ACALL TIM3
MOV R2,#0CEH ;add(2.15) 第二行第15个位置显示
MOV R1,#50H ;取负载电阻值的存储器50H首地址
MOV R6,#05H ;count 显示字体数量 5位
ACALL PR5 ;display负载电阻值输出
ACALL TIM3
AJMP STAR1 ;返回动态显示界面
PR0: ANL P3,#00H ;p3 set to 0 控制信号全为低电平
ClR P3.6 ;RS=0
SETB P3.7 ;R/W=1
P01: ORL P1,#0FFH ;p1 set to1(input)
SETB P3.5
MOV A,P1 ;Read p1
CLR P3.5
ACALL TIM4
JB ACC.7,P01 ;Judge BF判断VFD是否繁忙
RET
PR1: LCALL PR0 ;Write instruction program
MOV A,R2
CLR P3.6 ;RS=0
CLR P3.7 ;R/W=1
SETB P3.5 ;E=1 打开写入命令口
ACALL TIM3
MOV P1,A ;将指令写入DB口
CLR P3.5 ;E=0 关闭写入命令口
ACALL TIM4
RET
PR2: LCALL PR0 ;Write data program
MOV A,R2
SETB P3.6 ;RS=1
CLR P3.7 ;R/W=0
SETB P3.5 ;E=1 打开写入数据口
ACALL TIM2
MOV P1,A ;将数据写入DB口
CLR P3.5 ;E=0 关闭写入数据口
ACALL TIM4
RET
PR3: ANL P3,#00H ;Initialization program
ANL P1,#00H ;DB口清零
MOV R7,03H ;loop count
P31: MOV R2,#38H ;Function control 控制指令
ACALL PR1 ;写入控制指令
ACALL TIM4
DJNZ R7,P31
MOV R2,#01H ;Clear screen
ACALL PR1 ;写入控制指令
MOV R2,#06H ;Input mode setting 8输入方式
ACALL PR1
MOV R2,#0EH ;Display mode setting 显示方式
ACALL PR1
RET
PR4: ACALL PR1
P41: CLR A
MOVC A,@A+DPTR ;Write to display 查表显示
MOV R2,A
ACALL PR2 ;调用写数据控制模块
INC DPTR ;指针向下进行
DJNZ R6,P41 ;查询字体信息是否显示完毕
RET
PR5: ACALL PR1
P51: CLR A ;Write to display 内部ROM调用
MOV A,@R1
MOV R2,A
ACALL PR2 ;调用写数据控制模块
INC R1 ;指针向下进行
DJNZ R6,P51 ;查询字体信息是否显示完毕
RET
TIM1: MOV R5,#05H ;Time delay
TT1: ACALL TIM2
DJNZ R5,TT1
RET
TIM2: MOV R4,#0FFH
TT2: ACALL TIM3
DJNZ R4,TT2
RET
TIM3: MOV R3,#25H
ACALL TIM4
TT3: DJNZ R3,TT3
TIM4: MOV R0,#0FFH
TT4: DJNZ R0,TT4
RET
TAB: DB 57H,45H,4CH,43H,4FH,4DH,45H,20H,21H,21H ;WELCOME!!
DB 57H,41H,49H,54H,49H,4EH,47H,20H,20H ;WAITING
DB 49H,4EH,50H,55H,54H,0A5H,0A5H,0A5H,0A5H ;INPUT....
TAB1: DB 53H,45H,54H,3AH ;SET:
TAB2: DB 4FH,55H,54H,3AH ;OUT:
TAB3: DB 56H,4FH,4CH,3AH ;VOL:
TAB4: DB 52H,45H,53H,3AH ;RES:
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -