📄 r.asm
字号:
;byte2:04 or 05
;byte3:SOE code
;byte4:time-Hour
;byte5:time-Minute
;byte6:time-Second
;byte7:time-MSH
;byte8:time-MSl
;byte9:value low
;byte10:value High
SYDSOEBUF EQU 0F000H ;备运动事件存放区
;total SOE number <200(SOEH)
;byte1:spu ADDr.code
;byte2:04 or 05
;byte3:SOE code
;byte4:time-Hour
;byte5:time-Minute
;byte6:time-Second
;byte7:time-MSH
;byte8:time-MSl
;byte9:value Low
;byte10:value High
MYDSOEBUF EQU 0F800H ;主运动事件存放区
;total SOE number <200(SOEH)
;byte1:spu ADDr.code
;byte2:04 or 05
;byte3:SOE code
;byte4:time-Hour
;byte5:time-Minute
;byte6:time-Second
;byte7:time-MSH
;byte8:time-MSl
;byte9:value Low
;byte10:value High
;CONSTANT FACTOR
CDLTH EQU 05
THLTH EQU 30
TMLTH EQU 30
TLLTH EQU 32
DDLTH EQU 02
PTDLTH EQU 04
COMLTH EQU 54
CLTH EQU 15
AUXLTH EQU 02
LSPULTH EQU 16 ;LINE SPU DATA LENGTH
CD1M EQU SATAB
CD1S EQU CD1M+CDLTH
TH1M EQU CD1S+CDLTH
TH1S EQU TH1M+THLTH
TM1 EQU TH1S+THLTH
TL1 EQU TM1+TMLTH
DD1 EQU TL1+TLLTH
CD2M EQU DD1+DDLTH
CD2S EQU CD2M+CDLTH
TH2M EQU CD2S+CDLTH
TH2S EQU TH2M+THLTH
TM2 EQU TH2S+THLTH
TL2 EQU TM2+TMLTH
DD2 EQU TL2+TLLTH
PTJK EQU DD2+DDLTH
COM EQU PTJK+PTDLTH
CAP1 EQU COM+COMLTH
CAP2 EQU CAP1+CLTH
CAP3 EQU CAP2+CLTH
CAP4 EQU CAP3+CLTH
AUX1 EQU CAP4+CLTH
AUX2 EQU AUX1+AUXLTH
AUX3 EQU AUX2+AUXLTH
AUX4 EQU AUX3+AUXLTH
AUX5 EQU AUX4+AUXLTH
AUX6 EQU AUX5+AUXLTH
AUX7 EQU AUX6+AUXLTH
L1101 EQU AUX7+AUXLTH
L1102 EQU L1101+LSPULTH
L1103 EQU L1102+LSPULTH
L1104 EQU L1103+LSPULTH
L1105 EQU L1104+LSPULTH
L1106 EQU L1105+LSPULTH
L1107 EQU L1106+LSPULTH
LSPU1 EQU L1107+LSPULTH
RDATASUML EQU KDATA-RDATA
KDATASUML EQU CLKDATA-KDATA
FVLENGTH EQU FVRAMEND-FVRAM
BOUNDRY EQU DIV110A35-SUM4ADDR
CONW EQU 071H
AFUN EQU 000H
D1FUN EQU 0F0H
D2FUN EQU 0A0H
ZB1_F EQU TL1+28
ZB2_F EQU TL2+28
ZB1_T EQU COM+35
ZB2_T EQU COM+37
ZB1_W EQU TL1+30
ZB2_W EQU TL2+30
U01 EQU TL1+26
U02 EQU TL2+26
GNDPF EQU 0
GNDNUM EQU 1
SGNDFV EQU 0CCH
YDDATL EQU 16
YDSOEL EQU YDDATL/2
YKSUM EQU (SPUNOEND-SPUNO)/2
RSTFLG EQU YKSUM
YTSTNUM EQU (YTSTART-SPUNO)/2
GNDSUM EQU GNDEND-GNDSPU
T1ms EQU 692
STDLY EQU T1ms*50
SCHAR EQU 68H
ECHAR EQU 00H
PCSTX EQU 0EBH
DATR2LLTH EQU 35
ALLFLG EQU 0 ;INSERT SOE&ALARM ALL SIGNAL
;0:NO
;1:YES
INSFLG EQU 1 ;0:SINGLE INSERT WORD
;1:MULTI INSERT WORD
COM1FLG EQU 0 ;0:GPS
;1:XXQ
;IF CRYTAL=11.0592MHZ
;02H->230.4KBPS ;05H->115.2KBPS
;0BH->57.6KBPS ;11H->38.4KBPS
;23H->19.2KBPS ;47H->9600BPS
;8FH->4800BPS ;11FH->2400BPS
;23FH->1200BPS ;47FH->600BPS
;8FFH->300BPS
BPSCODE EQU 005H ;与后台机通讯默认波特率
;bpscode=(crySTal/16)/desire bps
;Fs=crySTal/16,bpscode=Fs/desire bps
;CrySTal=1.8432MHZ,Fs=115200
;if Fs and desire bps firST devided by 100,tHen
;115200 turn into 1152,300 turn into 3
BPS300 EQU 1152/3
BPS600 EQU 1152/6
BPS1200 EQU 1152/12
BPS2400 EQU 1152/24
BPS4800 EQU 1152/48
BPS9600 EQU 1152/96
CSEG AT 2000H
ORG 2000H
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW HSI0
DCW STINT
DCW RS485
DCW EXINT
ORG 2018H
DCB 0CDH ;D0=1,ENABLE POWERDOWN FEATURE
;D1=0,1/0:16 BIT BUS/8 BIT BUS
;D2=1,1/0:(/WR&/BHE)/(/WRL&/WRH)
;D3=1,1/0:ALE/(/ADV)
;D4=0;00 LIMIT TO ONE WAIT STATE
;D5=1;01 LIMIT TO TWO WAIT STATES
;10 LIMIT TO THREE WAIT STATES
;11 WIAT STATES NOT LIMITED INTERNALLY
;D6=1;
;D7=1;PROGRAM LOCK MODE
ORG 2030H
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
DCW TRAMQ
ORG 2080H
LJMP START
;TOTAL SPU ADDR TABLE
SUM4ADDR:
DCB 01H,02H,03H,04H,05H,06H,43H
DCB 07H,08H,09H,0AH,0BH,0CH,49H
DCB 0DH,0FH,10H,11H,12H,13H
DCB 54H,55H,56H,57H,58H,59H,5AH
DCB 14H,15H,16H,17H,18H,19H,1AH
DIV110A35:
DCB 1BH,1CH,1DH,1EH,1FH
DCB 20H,21H,22H,23H,24H
DCB 25H,26H,27H,28H,29H
DCB 2AH,2BH,2CH,2DH,2EH
DCB 2FH,30H,31H,32H,33H
DCB 34H,35H,36H,37H,38H
DCB 39H,3AH,3BH,3CH,3DH
DCB 3EH,3FH,40H,41H,42H
S4AEND: DCB 0FFH
;SAVE SPU DATA FIELD
SADATT: DCW CD1M ;01 L=05 d
DCW CD1S ;02 L=05 d
DCW TH1M ;03 L=30 HM
DCW TH1S ;04 L=30 HS
DCW TM1 ;05 L=30 M
DCW TL1 ;06 L=32 l
DCW DD1 ;43 L=02 1#a
DCW CD2M ;07 L=05 d
DCW CD2S ;08 L=05 d
DCW TH2M ;09 L=30 HM
DCW TH2S ;0A L=30 HS
DCW TM2 ;0b L=30 M
DCW TL2 ;0c L=32 l
DCW DD2 ;49 L=02 2#a
DCW PTJK ;0d L=04 pt
DCW COM ;0f L=54 comm
DCW CAP1 ;10 L=15 cap 1
DCW CAP2 ;11 L=15 cap 2
DCW CAP3 ;12 L=15 cap 3
DCW CAP4 ;13 L=15 cap 4
DCW AUX1 ;54 L=02 110a(1)
DCW AUX2 ;55 L=02 110a(2)
DCW AUX3 ;56 L=02 110a(3)
DCW AUX4 ;57 L=02 110a(4)
DCW AUX5 ;58 L=02 110a(5)
DCW AUX6 ;59 L=02 110a(6)
DCW AUX7 ;5a L=02 110a(7)
DCW L1101 ;14 L=16 110(1)
DCW L1102 ;15 L=16 110(2)
DCW L1103 ;16 L=16 110(3)
DCW L1104 ;17 L=16 110(4)
DCW L1105 ;18 L=16 110(5)
DCW L1106 ;19 L=16 110(6)
DCW L1107 ;1a L=16 110(7)
SADATL: DCW LSPU1 ;1b L=16 line 35/10kv
;initialize program
START: DI
LDB R0,WDOG[0]
LD SP,#100H ;set STack point (internal RAM)
CLRB INT_MAS
CLRB INT_MAS1
LDB IOC0,#081H ;D7=1:SET IOC0,TIMER 2 clock source HSI.1
;D6=0:HSI.3 input DISable
;D5=0:Timer 2 reset source HSI.0
;D4=0:HSI.2 input disable
;D3=0:timer 2 external reset enable
;D2=0:HSI.1 input enable
;D1=0:Timer 2 is not reset at eacH write
;D0=1:HSI.0 input enable
LDB IOC1,#0A0H ;SET IOC1
;D7=1:HSI HOLDING LOADED INT.
;D6=0:HSO.5 OUTPUT DISABLE
;D5=1:SELECT TXD
;D4=0:HSO.4 OUTPUT DISABLE
;D3=0:TIMER 2 OVERFLOW INT.DISABLE
;D2=0:TIMER 1 OVERFLOW INT DISABLE
;D1=0:EXTERNAL INT
;D0=0:SELECT P2.5
CLRB INT_PEN ;clear int.pending regiSTer
CLRB INT_PEN1
LDB HSO_COM,#06H
ADD HSO_TIM,TIMER1,#03H
START1: NOP
DJNZ MBL,START1
LDB HSO_COM,#02H ;STOP MODEM LOCAL LOOP TEST
ADD HSO_TIM,TIMER1,#03H
STB R0,RCPUS[0]
CMP PWFLG,#55AAH
JNE START2
LJMP START3
START2: NOP
CALL TEST_IRAM ;测试单片机内部RAM
CMP MAX,MBX
JE START3
ORB BCOSBIT,#80H
CLR PWFLG
SJMP START31
START3: LD PWFLG,#55AAH
ANDB BCOSBIT,#7FH
START31:CLRB MFL
STB R0,DATL2RBF[0]
STB R0,COMR2LBF[0]
START32:NOP
CALL TEST_ERAM ;测试外部RAM
CMP MAX,R0
JE START4
STB R0,WDOG[0]
INCB MFL
CMPB MFL,#2
JNH START32
ORB BCOSBIT,#40H
SJMP START41
START4: ANDB BCOSBIT,#0BFH
START41:CLRB CTRLR
STB CTRLR,CTRLIO[0]
;读取定值
LD FVDX,#FVRAM
CLR FVBX
LDB FVCL,#FVLENGTH
CALL RD_FV
CMP WRFVFLG,#55AAH
JE START6
LD WRFVFLG,#55AAH
LD SWAX,#90EBH
LDBZE PCBPSCODE,#BPSCODE
LD COM1BPSCODE,#BPS4800
LD COM2BPSCODE,#BPS9600
LD COM3BPSCODE,#BPS300
LD COM4BPSCODE,#BPS300
LDB COM1DEF,#03H
LDB COM2DEF,#03H
LDB COM3DEF,#03H
LDB COM4DEF,#03H
LDB ZLPMADER,#08H
LDB YDXY,#01H
LDB COM1BIT,#01H
LDB DDLSUM,#16
LDB SRTUADDR,#01H
LDB MRTUADDR,#01H
LDB ZLPADDR,#23H
LDB COMBITDEF,#01H
LDB MCL,#FVLENGTH
LD MDX,#FVTMPBUF
LDB MAL,#0FFH
START5: STB MAL,[MDX]+
DJNZ MCL,START5
CALL WRFVPRO
START6: LDB BAUDR,PCBPSCODEL
ADDB BAUDR,PCBPSCODEH,#80H
;工作在备机状态?
MORS: NOP
LDB MAL,MSFLG[0]
CMPB MAL,#0AAH
JE SLOOP
ANDB SPFLG1,#7FH
STB BCOSBIT,RCPUS[0]
LJMP MAINP
;SLAVE MODE
SLOOP: NOP
DJNZW MCX,MORS
STB R0,WDOG[0]
JBS SPFLG1,7,MORS
ORB SPFLG1,#80H
DI
CLRB INT_MAS
CLRB INT_PEN
SJMP MORS
;初始化外部硬件及相关内外部寄存器
MAINP: NOP
CALL INI16C554
CLRB SOEH
CLR SOEL
CLR SOER
CLR TESTRCNT
CLR SPFLG1
CLRB SPFLG3
CLR MPCRFLG
CLR MYDRFLG
CLR TASK5
CLR WHATHOST
CLR RBX
CLR RCX
CLR COM1RTCNT
CLR COM2RTCNT
CLR COM3RTCNT
CLR COM4RTCNT
CLR HCX
CLR SOEMM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -