📄 wxcs_31.asm
字号:
MOV TL1,#0FDH ;9600 BAUD RATE
MOV TH1,#0FDH
MOV TMOD,#00100101B
MOV SCON,#01010000B
MOV TCON,#01010101B
MOV IE,#11110111B
MOV IP,#11010000B ;T2 highest priority
clr brswe
mov SNDpnt,#sndbuf
mov RCVpnt,#rcvbuf
SETB Receive_End_Flag ;收到命令结束符
;;;;;;;;;;;;;;;;;;;;;
job0000: ;主工作程序
JNB BTMG,JOB1 ;光电头对光延时标志是否为1?
DJNZ TMG,JOB1 ;标志为1,延时是否结束?
DJNZ TMGH,JOB1
CLR GRES ;对光延时时间到,复位光电采样器
CLR BTMG ;清光电头对光延时标志
JOB1:
JNB BTIK1,JOB21 ;IK1控制信号延时标志是否为1?
djnz TMB,job21 ;标志为1,延时是否结束?
DJNZ TMBH,JOB21
MOV TMBH,#40H ;延时600MS
SETB IOFF ;IK2
SETB BTMB
CLR BTIK1 ;IK1吸合或断开延时
JOB21:
JNB BTMB,JOB22 ;BEEP响延时标志
DJNZ TMB,JOB22
DJNZ TMBH,JOB22
MOV TMBH,#10H ;延时100MS
CLR BTMB
JNB IOFF,BEPON
CLR IOFF ;IK2
SETB BTIK2
BEPON:
SETB BEEP
JOB22:
JNB BTIK2,JOB2
DJNZ TMB,JOB2
DJNZ TMBH,JOB2
MOV TMBH,#10H ;延时100MS
CLR BTIK2
CLR IK1 ;IOFF=0,BTIK1=0 BEST JDQ 保持原状态
JOB2:
JNB BKTIM,JOB3 ;有键按下
JB DKEY,JOB4
DJNZ TMKL,JOB5
DJNZ TMKH,JOB5
JNB GBBZ,JOB12
MOV A,MODE
JNZ JOBY3
MOV MODE,#02 ;对黑斑
SETB BSGB
JOB12:
CLR BKTIM
CLR BKYS
CLR BKEYM
CLR BKTIM
ljmp JOB5
JOBY3:
MOV MODE,#0 ;对黑斑返回
SETB BSGB
ljmp JOB12
JOB4:
CLR BKTIM
SETB BKYS ;按键松开延时
SETB BKEYM
MOV TMKL,#0
MOV TMKH,#28H
JOB3:
JNB BKYS,JOB5
DJNZ TMKL,JOB5
DJNZ TMKH,JOBY5
CLR BKYS
JNB GBBZ,JOB11
MOV A,MODE
JNZ JOBY1
lcall GDCLS ;误差清零
JOB11: ljmp JOB5
JOBY1: CJNE A,#2,JOBY2
SETB BSGB
MOV MODE,#3
ljmp JOB5
JOBY2: MOV MODE,#5
SETB BSGB
ljmp JOB5
JOBY5: JNB BKEYM,JOB5
MOV A,TMKH
CJNE A,#24H,JOB5
CLR BKEYM
JOB5:
JB BGET,JOB7 ;接收到串口指令
JOB8:
ljmp JOB6
JOB7:
CLR BGET ;处理接收到的指令和数据
mov r0,#rcvbuf
MOV A,@r0
CJNE A,#'C',JOB13
JOB70:
mov r0,#rcvbuf+2 ;查询 CXX(0dh)
mov a,@r0
cjne a,#3AH,ERR1
ERR1:
jnc ERR3
ANL A,#0FH
MOV B,A
mov r0,#rcvbuf+1
MOV A,@r0
cjne a,#3AH,ERR2
ERR2: jnc ERR3
SWAP A
ANL A,#0F0H
ORL A,B
XRL A,ADBH
JZ JOB14
ERR3: ljmp JOB6
JOB14: ljmp SENDWC
JOB13:
CJNE A,#'N',JOB130
LJMP JOB70 ;查询耐压结果
JOB130:
CJNE A,#'G',JOB8
lcall Active_DAta
jb f0,job8 ;f0=1 表示接收到非法数据
mov r0,#rcvbuf+1 ;f0=0 如果接收数据有效则继续往下处理
MOV A,@r0
cjne a,#'D',$+3
jc job8
cjne a,#'Z'+1,$+3 ;Z+1 D---Z
jc JOB15
CJNE A,#'d',$+3
JC JOB8
CJNE A,#'z'+1,$+3
JNC JOB8
CLR C
SUBB A,#'d'
ADD A,#('['-'D')
ljmp JOB16
JOB15: CLR C
SUBB A,#'D'
JOB16: PUSH ACC
mov r0,#rcvbuf+4
MOV A,@r0
ANL A,#0FH
MOV B,A
mov r0,#rcvbuf+3
MOV A,@r0 ;表号
SWAP A
ANL A,#0F0H
ORL A,B
JnZ job102
job103:
ljmp JOB10
job102:
XRL A,ADBH
JZ JOB103
POP ACC
ljmp JOB6
JOB101: MOV B,#03H
MUL AB
MOV DPTR,#JOB9
JMP @A+DPTR
JOB9: Ljmp GETBZZ ;D 接收标准值
Ljmp GETN ;E 接收校验圈数
Ljmp GETRES ;F 接收误差清零
Ljmp GETDG ;G 接收光电头对光
Ljmp GETXB ;H 选表位
Ljmp GETHB ;I 对黑斑 ;0 退去其他试验,回到校验状态
Ljmp GETJS ;J 监视光电头脉冲 ;起动/潜动时记数
Ljmp wrmod ;K 接线方式 有功无功切换
Ljmp bpen ;L 喇叭开关
Ljmp GETTC ;M 接收校核常数设定圈数,准备开始走字试验
Ljmp TESTC ;N 开始进行走字试验
Ljmp GETCST ;O 接收被校表常数
Ljmp pusch ;P 脉冲选择 电子脉冲还是光电头脉冲
Ljmp Cntpw ;Q 计电能试验 1:开始 0:终止
Ljmp clear ;R 清除电能计数
Ljmp puscmp ;S 脉冲比较 电子脉冲和光电头脉冲比较 ;进入比较状态
Ljmp GETBZ ;T 接收脉冲和盘转比值
Ljmp GETBN ;U 接收脉冲和盘转设定比较圈数
Ljmp zzsy ;V 进入失压状态,接收失压方案
Ljmp systr ;W 失压试验开始
Ljmp GT2000 ;X 时钟脉冲控制 ;X 功耗试验 SOME EQUIPMENT USED
LJMP GETDIVR ;Y 分频系数
LJMP CSSY ;Z 常数测试实验
ljmp POWTST ;d 功耗测试
LJMP JOB6 ;e 功耗测量单元用
LJMP JOB6 ;f 功耗测量单元用
LJMP JOB6 ;g 功耗测量单元用
LJMP JOB6 ;h 设置功耗测量单元单元号
ljmp mcbxcs ;i 被校表脉冲测试
ljmp pptype ;j 接线方式
ljmp ppdpxz ;k add 4059被校表脉冲输出类型选择
ljmp setZZpls ;l 设置走字脉冲数
ljmp Puls_ZZ_Tst ;m 脉冲走字试验
ljmp Puls_Yz ;n 预置脉冲数 断电恢复
ljmp Ny_Start_Tst ;o开始耐压试验
ljmp Ny_Tm_End ;p耐压时间到
ljmp Change_Udz ;q切换表尾电压端子
ljmp Err_Test_Light ;r误差校验指示灯控制命令
JOB10: POP ACC
MOV B,#(JOB10-JOB9)/3
CJNE A,B,$+3
JnC job104
ljmp JOB101
job104:
LJMP JOB8
;-----------------
GT2000: MOV R0,#RCVBUF+5
MOV A,@R0
ANL A,#0FH
JNZ GT21
CLR EX0 ; 关闭INT0中断
CLR BTK2
CLR BTK3
SJMP GT3E ;选择LED脉冲输入
GT21: CJNE A,#01H,GT22
SETB EX0 ;开INT0中断
SETB BTK2
CLR BTK3
SJMP GT3E ;选择需量周期脉冲
GT22: SETB EX0 ;开INT0中断
CLR BTK2
SETB BTK3 ;选择时钟脉冲
GT3E: LJMP JOB6
;----- add 4059被校表脉冲输出类型选择
ppdpxz:
mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
jnz ppdpxz1
setb btygwg ;p0.0
ljmp job6
ppdpxz1:clr btygwg ;p0.0
ljmp job6
;----------------------------
Change_Udz:
mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
jnz chgudz1
setb p0.4 ;Gq:000
ljmp job6
chgudz1:
clr p0.4 ;Gq:001
ljmp job6
;----------------------
Err_Test_Light:
mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
jnz Err_Test1
clr p3.6 ;Gr:000
ljmp job6
Err_Test1:setb p3.6 ;Gr:001
ljmp job6
;----------------------
;设置走字脉冲数
setZZpls:
MOV IMBUF0,#00H
MOV IMBUF1,#00H
MOV IMBUF2,#00H
mov imbuf3,#00h
LCALL MBTH
mov a,imbuf0
orl a,imbuf1
orl a,imbuf2
orl a,imbuf3
jnz stzzps1
mov zzplsn,#1
mov zzplsn+1,#0
mov zzplsn+2,#0
mov zzplsn+3,#0
ljmp job6
stzzps1:
mov ZZPlsN,IMBUF0
mov ZZPlsN+1,IMBUF1
mov ZZPlsN+2,IMBUF2
mov ZZPlsN+3,imbuf3
ljmp job6
;-------预置脉冲数
Puls_Yz:
MOV IMBUF0,#00H
MOV IMBUF1,#00H
MOV IMBUF2,#00H
mov imbuf3,#00h
LCALL MBTH
mov pwcnt1,IMBUF0
mov pwcnt2,IMBUF1
mov pwcnt3,IMBUF2
mov pwcnt4,imbuf3
plus_yz2:
setb btMcYz
ljmp job6
;----------------------------
;o开始耐压试验
Ny_Start_Tst:
JNB GBBZ,Ny_Str1
mov mode,#0dh
clr BREF ;清除有耐压结果标志
Ny_Str1:ljmp job6
;----------------------------
;p耐压时间到
Ny_Tm_End:
ljmp job6
;----------------------------
CSSY: JNB GBBZ,CSSY2
SETB BSGB
MOV R0,#RCVBUF+5
MOV A,@R0
ANL A,#0FH
JZ CSSY2
; SETB BTCSSY ;置常数测试标志
MOV TMOD,#00100101B ;t0 counter
MOV MODE,#9
MOV IMCSCNT,#0
MOV IMCSCNT1,#0
; mov r1,#imbuf0
; mov r0,#imbzc1
; mov r6,bzcsN
;cssy1: mov a,@r0
; mov @r1,a
; inc r0
; inc r1
; djnz r6,cssy1 ;fh*n/c
; mov r0,#imbufd
; mov r1,#const1
; mov r6,#04h
;cssy3: mov a,@r1
; mov @r0,a
; inc r0
; inc r1
; djnz r6,cssy3 ;c
; mov r0,#imbuf0
; mov r2,bzcsN
; mov r1,#imbufd
; mov r3,#04h
; lcall mmul ;(fh*n/c)*c
; mov bzcsN,r2
; mov r1,#imbzc1
;cssy4: mov a,@r0
; mov @r1,a
; inc r0
; inc r1
; djnz r2,cssy4
CSSY2: LJMP JOB6
;--------接线方式
pptype: mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
mov imtype,a
ljmp job6
;----------------------------
;功耗测试
POWTST: mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
jz powtst2
mov a,mode
cjne a,#10,powtst1
ljmp job6
powtst1: MOV MODE,#10
LCALL GDCLS ;
LCALL AllDK
LJMP JOB6
powtst2: LJMP DHB1
;----------检测被校表脉冲波形
mcbxcs: JNB GBBZ,MCCS2
mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
jz powtst2 ;Gi:000 返回到mod0
mov a,mode ;Gi:001 进入mod11
cjne a,#11,mccs1
ljmp job6
mccs1: MOV MODE,#11
LCALL GDCLS ;
;-------将t0改为内部定时器用
clr tr0
mov tmod,#00100001b ;timer 16 bits
mov th0,#0fch ;1ms timer
mov tl0,#67h
setb tr0
SETB BFIRST
MCCS2:
LJMP JOB6
;----------------------------
GETTC: JNB GBBZ,GTC2
SETB BSGB
MOV MODE,#4
mov imbuf0,#00h
mov imbuf1,#00h
mov imbuf2,#00h
Lcall MBTH
MOV ZZcs,imbuf0
MOV ZZcs+1,imbuf1
mov ZZcs+2,imbuf2
MOV ZZcsTp,imbuf0
MOV ZZcsTp+1,imbuf1
mov ZZcsTp+2,imbuf2
LCALL JDQXH ;AS108断开,JDQ吸合
GTC2: ljmp JOB6
;----------------------------
ZZsy:
JNB GBBZ,ZZsy4
mov mode,#06
mov r0,#rcvbuf+5
mov a,@r0
anl a,#0fh
jz zzsy0
cjne a,#04,$+3
jc ZZSY1
zzsy0:
mov a,#01h
zzsy1:
mov sy,a
xrl a,#03
jz zzsy2 ;失压3 JDQ吸合
lcall JDQDK ;AS108吸合 ,JDQ 断开
sjmp zzsy3
zzsy2:
lcall jdqxh
zzsy3:
clr BTSTRSY
clr tr0
mov tmod,#00100001b ;timer 16 bits
mov th0,#0eeh ;5ms timer
mov tl0,#00h
setb tr0
zzsy4:
ljmp job6
;------------------------------
SYSTR:
JNB GBBZ,begrt
mov a,mode
xrl a,#06h
jnz begrt
SETB BTSTRSY
SETB BSGB
mov imsyctm,im5ms
begrt: LJMP job6
;-------------------------------
TESTC: JNB GBBZ,GTC2
LCALL JDQXH
MOV ZZPW,#01H
MOV ZZPW+1,#80H
MOV ZZPW+2,#0FH
mov r0,#rcvbuf+5
MOV A,@r0
ANL A,#0FH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -