📄 op_test.asm
字号:
;******************************************************************************************
;******************************************************************************************
buff EQU 30H ;乘法缓冲区4
FD1 EQU 31H ;往后三字节,浮点运算缓冲区1
FD2 EQU 34H ;往后三字节,浮点运算缓冲区2
VIO1 EQU 37H ;AD采样值存储区
VS1 EQU 42H ;输入失调电压显示缓冲区(存放为8位二进制=======》1位十进制BCD码)共四位
VS2 EQU 47H
SIGN BIT 48H
BIT_CNT DATA 49H ;------------------键盘缓冲区
DELAY1 DATA 50H
DELAY DATA 51H
REC_BUF DATA 52H
SEND_BUF DATA 53H
LCD_X EQU 54H ;------------------液晶缓冲区
LCD_Y EQU 55H
COUNT EQU 56H
COUNT1 EQU 57H
COUNT2 EQU 58H
COUNT3 EQU 59H
LCD_DATA EQU 60H
LCD_DATA1 EQU 61H
LCD_DATA2 EQU 62H
;STORE EQU 63H
DA_IN EQU 64H ;数据或指令
RS_STU BIT 65H ;数据指令选择
RW_STU BIT 66H ;读写指令选择
WR_COUNT1 EQU 67H ;计数器1
WR_COUNT2 EQU 68H ;计数器2
START BIT P2.0 ;接START(六脚)
CS BIT P1.6 ;I/O口设置
CLK BIT P1.5
DIO BIT P1.4
KEY BIT P1.3
SCLK EQU P1.2
STD EQU P1.1
CSY EQU P1.0
LEDA EQU P2.4
RST EQU P2.3
;******************************************************************************************
;******************************************************************************************
;ORG 0000H
;AJMP MAIN
MAIN:setb LEDA
MOV SP,#70H
SETB RST
NOP
;********************液晶初始化****************************************************************
LGS0: MOV A,#34H ;34H--扩充指令操作 八比特控制接口,图形显示关闭
LCALL SEND_I
MOV A,#30H ;30H--基本指令操作 八比特控制接口,
LCALL SEND_I
MOV A,#01H ;清除显示
LCALL SEND_I
MOV A,#06H ;指定在资料写入或读取时,光标的移动方向
LCALL SEND_I
MOV A,#0CH ;开显示,关光标,不闪烁
LCALL SEND_I
RESET:SETB CS;
SETB KEY
SETB DIO
MOV DELAY,#25 ;延时
;RST_DELAY1:
; DJNZ DELAY1,RST_DELAY1
; DJNZ DELAY,RST_DELAY1
; MOV SEND_BUF,#10111111B ;----------测试
; LCALL SEND
; SETB CS
; MOV SEND_BUF,#10100100B ;----------复位
; LCALL SEND
; SETB CS
;MOV TMOD,#02H ;T0方式2,T1方式1计数
; MOV TL0,#06H
;MOV TH0,#06H ;T0赋初值(0.4S)
;SETB TR0 ;键盘高优先级 ;开键盘、T0、T1中断
;SETB ET0
;SETB EX0
;SETB EA
;MOV DPTR,#TAB0 ;显示初始信息
;LCALL LGS1
;LCALL DELAY3
MOV DPTR,#TAB1
LCALL LGS1
LCALL DELAY3
MOV DPTR,#TAB2
LCALL LGS1
LOOP: JB KEY,LOOP ;是否有键入
MOV SEND_BUF,#00010101B ;-----------读键盘数据
LCALL SEND
LCALL RECEIVE
SETB CS
MOV SEND_BUF,#80H ;-------------下载数据且按方式0译码,显示位1
LCALL SEND
SETB CS
LCALL LONG_DELAY
jnb key,$
KEYS:MOV A,REC_BUF
CLR C
SUBB A,#05H
JC GO
AJMP LOOP
GO: MOV A,REC_BUF
CLR C
RLC A
MOV DPTR,#TABGO
JMP @A+DPTR
TABGO:AJMP T_VIO ;测量输入失调电压
AJMP T_IIO ;测量输入失调电流
AJMP T_AVD ;测量差模电压增益
AJMP T_KCMR ;测量交流共模抑制比
AJMP GOON ;自动测试
;******************************************************************************************
;******************************************************************************************
T_VIO:MOV A,#01H ;清除显示
LCALL SEND_I
MOV DPTR,#TAB3 ;显示======输入失调电压为:
ACALL MV0 ;40mV
MOV A,SIGN ;T0计时是否到
ANL A,#00000010B
JZ T_VIO1
CLR ACC.1
MOV SIGN,A ;清标志位
SETB P3.0 ;操作I/O口,控制继电器
SETB P3.1
SETB P3.2
CLR P3.3
SETB P3.4
CLR P3.5
CLR P3.6
LCALL DELAY2
LCALL ADC
MOV R1,#VS1 ;送显示缓冲区首地址
LCALL VIO_DEAR
DIR_VIO:MOV A,VIO1
CLR C
SUBB A,#14H ;量程选择
JC LM
SM:MOV DPTR,#TAB3 ;
ACALL MV0 ;4mV
MOV R1,#VS1
DEC R1
MOV A,#88H
LCALL SEND_I
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,#2EH
LCALL SEND_D
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
ACALL MV
LM:MOV DPTR,#TAB3 ;显示======输入失调电压为:
ACALL MV ;40mV
MOV R1,#VS1
MOV A,#88H
LCALL SEND_I
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,#2EH
LCALL SEND_D
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
ACALL MV ;mV
T_VIO1:LCALL WORK
AJMP T_VIO
RET
;**************************************************************************************
MVW:
;**************************************************************************************
MV:MOV A,#8EH ;显示==============mV
LCALL SEND_I
MOV A,#4DH
LCALL SEND_D
MOV A,#8FH
LCALL SEND_I
MOV A,#76H
LCALL SEND_D
RET
;******************************************************************************************
;******************************************************************************************
T_IIO: MOV A,#01H ;清除显示
LCALL SEND_I
MOV DPTR,#TAB4
ACALL MV0
;MOV A,SIGN ;T0计时是否到
;ANL A,#00000010B
;JZ TIO
;CLR ACC.1
;MOV SIGN,A ;清标志位
SETB P3.0 ;操作I/O口,控制继电器
SETB P3.1
SETB P3.2
CLR P3.3
SETB P3.4
CLR P3.5
CLR P3.6
LCALL DELAY2
LCALL ADC
MOV A,VIO1
POP A
CLR P3.0 ;操作I/O口,控制继电器
CLR P3.1
SETB P3.2
CLR P3.3
SETB P3.4
CLR P3.5
CLR P3.6
LCALL DELAY2
LCALL ADC ;控制可控硅,读取VL1
MOV A,VIO1
MOV R0,A
MOV A,VIO1
SUBB A,R0
MOV VIO1,A
MOV R1,#VS2 ;送显示缓冲区首地址
LCALL VIO_DEAR
;AJMP DIR_IIO
;TIO: AJMP T_IIO1
DIR_IIO:MOV A,VIO1
CLR C
SUBB A,#14H ;量程选择
JC LMI
SMI:MOV DPTR,#TAB4 ;
ACALL MV0 ;0.4DB
MOV R1,#VS2
DEC R1
MOV A,#88H
LCALL SEND_I
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,#2EH
LCALL SEND_D
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
ACALL MV1
LMI:MOV DPTR,#TAB4
ACALL MV1
MOV R1,#VS2
MOV A,#88H
LCALL SEND_I
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,#2EH
LCALL SEND_D
MOV A,@R1
LCALL SEND_D
DEC R1
MOV A,@R1
LCALL SEND_D
DEC R1
ACALL MV1 ;nA
T_IIO1:LCALL WORK
AJMP T_IIO
RET
;**************************************************************************************
MV1:MOV A,#8EH ;显示==============nA
LCALL SEND_I
MOV A,'n'
LCALL SEND_D
MOV A,#8FH
LCALL SEND_I
MOV A,'A'
LCALL SEND_D
RET
;******************************************************************************************
;******************************************************************************************
T_AVD: MOV A,#01H ;清除显示
LCALL SEND_I
MOV DPTR,#TAB5
ACALL MV0
;MOV A,SIGN ;T0计时是否到
;ANL A,#00000010B
;JZ T_AVD1
;CLR ACC.1
;MOV SIGN,A ;清标志位
SETB P3.0 ;操作I/O口,控制继电器
SETB P3.1
SETB P3.2
CLR P3.3
CLR P3.4
SETB P3.5
SETB P3.6
LCALL DELAY2
LCALL ADC
MOV A,VIO1
MOV R1,#VS1
LCALL VIO_DEAR ;处理输入失调电压AD采样值,存在[高]24H~[低]20H中(分离BCD码)
MOV R0,#FD1 ;出口 分离BCD码转浮点BCD
MOV R1,#VS1 ;入口
LCALL TOBCD ;
MOV R0,#FD1
LCALL LG ;出口为@R0往后三字节
NOP
NOP
ACALL BCDTO ;@R1=FD2分离BCD码首地址(3位)
MOV R1,#FD1
MOV A,#88H ;显示数据
LCALL SEND_I
MOV A,@R1
LCALL SEND_D
INC R1
MOV A,@R1
LCALL SEND_D
INC R1
MOV A,@R1
LCALL SEND_D
MOV A,#44H
LCALL SEND_D
MOV A,#42H
MOV DPTR,#TAB5
ACALL MV0
T_AVD1:LCALL WORK
AJMP T_AVD
RET
;**************************************************************************************
MV2:MOV A,#8EH ;显示==============DB
LCALL SEND_I
MOV A,'n'
LCALL SEND_D
MOV A,#8FH
LCALL SEND_I
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -