?? 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 + -