📄 r.asm
字号:
CLR GNDDLY
CLR ZLPLOOP
CLR GPSLOOP
CLRB CLRGPS
ST R0,RCPUCNT[0]
ST R0,MTADDRSAV[0]
ST R0,STADDRSAV[0]
STB R0,MFRAMCNT[0]
STB R0,SFRAMCNT[0]
MAINP1: NOP
LCALL EXCH
LDB MAL,DOKFLG[0]
CMPB MAL,#99H
JNE MAINP1
CALL YCPRO
NOP
CALL YXPRO
NOP
CALL PQPRO
LD MAX,YCLTH[0]
DIVUB MAX,#YDDATL*2
CMPB MAH,R0
JE MAINP2
INCB MAL
MAINP2: SUBB YCDATL,MAL,#1
CMPB MAH,R0
JNE MAINP3
LDB MAH,#YDDATL*2
MAINP3: JBC MAH,0,MAINP4
INCB MAH
MAINP4: SHRB MAH,#1
LDB YCLAST,MAH
CMPB YCLAST,#5
JH MAINP5
LDB YCLAST,#6
MAINP5: LDBZE MAX,YXLTH[0]
DIVUB MAX,#4
CMPB MAH,R0
JE MAINP6
INCB MAL
MAINP6: LDB YXDATL,MAL
LDBZE MAX,#YKSUM
ST MAX,SUM4YK[0]
STB R0,MTRANF[0]
CALL COM4_TPRO
LD MCX,#MYDTSL
LD MDX,#COM4TL
LDBZE MBX,[MCX]+
STB MBL,[MDX]+
SHRB MBL,#1
BMOV MCX,MBX
LD MCX,#MYDTSL
LD MDX,#COM3TL
LDBZE MBX,[MCX]+
STB MBL,[MDX]+
SHRB MBL,#1
BMOV MCX,MBX
STB R0,MTRANF[0]
STB R0,STRANF[0]
LDB MAL,LEDSAVE[0]
XORB MAL,#20H
STB MAL,LEDSAVE[0]
LDB SP_CON,#09H
LDB INT_MAS,#0F0H
EI
;主循环程序
MLOOP: NOP
DI
LDB HSO_COM,#00H
ADD HSO_TIM,TIMER1,#03H
EI
LCALL EXCH
STB R0,WDOG[0]
LDB MAL,DOKFLG[0]
CMPB MAL,#99H
JNE MLOOP
CMPB R0,MPCRFLG
JE MLOOP1
CALL MPCPRO
MLOOP1: CMPB R0,SPCRFLG
JE MLOOP2
CALL COM1_RPRO
MLOOP2: JBC RTDATF,2,MLOOP3
ANDB RTDATF,#0FBH
CALL COM2_RPRO
MLOOP3: JBC RTDATF,3,MLOOP4
ANDB RTDATF,#0F7H
CALL COM3_RPRO
MLOOP4: JBC RTDATF,4,MLOOP5
ANDB RTDATF,#0EFH
CALL COM4_RPRO
MLOOP5: NOP
CALL SYDINPRO
NOP
CALL MYDINPRO
JBC RTDATF,5,MLOOP6
ANDB RTDATF,#0DFH
CALL COM5_RPRO
MLOOP6: NOP
CALL COM3_TPRO
NOP
CALL COM4_TPRO
JBC COM1BIT,1,MLOOP61
INC GPSLOOP
CMP GPSLOOP,#800H
JNH MLOOP61
CLR GPSLOOP
CALL COM1_TPRO
MLOOP61:
;data from lcpu Has not sent pc/remot
LDB MAL,COML2RBF[0]
CMPB MAL,#55H ;lcpu using
JE MLOOP7
CMPB R0,COML2RF[0]
JE MLOOP7
CMPB PCF1,R0
JNE MLOOP7
CMPB PCF2,R0
JNE MLOOP7
CMPB PCF3,R0
JNE MLOOP7
CMPB PCF4,R0
JNE MLOOP7
CMPB PCF5,R0
JNE MLOOP7
STB R0,COML2RF[0]
MLOOP7: NOP
LDB MAL,RLOOPCNT[0] ;判断左板是否工作正常
INCB MAL
STB MAL,RLOOPCNT[0]
LDB MAL,LLOOPCNT[0]
CMPB MAL,LLOOPSAV[0]
JNE MLOOP8
LD MCX,RCPUCNT[0]
INC MCX
ST MCX,RCPUCNT[0]
CMP MCX,#4000H
JNH MLOOP9
LDB HSO_COM,#21H ;复位左板
ADD HSO_TIM,TIMER1,#03H
NOP
LDB HSO_COM,#01H
ADD HSO_TIM,TIMER1,#06H
MLOOP8: ST R0,RCPUCNT[0]
MLOOP9: STB MAL,LLOOPSAV[0]
INC ZLPLOOP
CMP ZLPLOOP,#800H
JNH MLOOPA
CLR ZLPLOOP
CALL COM2_TPRO
MLOOPA: NOP
LJMP MLOOP
;RS-485 R INT
RS485: PUSHF
LDB RAH,SP_STAT
JBS RAH,6,RS4R1
LJMP RS4RQ
rs4r1: INCB RCL
LDB RAL,SBUF
XORB RBH,RAL
STB RAL,MPCRL[RCX]
CMPB RCL,#1
JNE RS4R2
CMPB RAL,#PCSTX
JE RS4RQ
LJMP RS4RX
rs4r2: CMPB RCL,#05H
JE rs4r3
CMPB RCL,MPCRL[0]
JNE rs4rQ
LJMP rs4re
rs4r3: LDB RAL,MPCR2[0]
CMPB RAL,#1AH ;F.W.R
JE RS4R4
CMPB rAL,#0A5H
JE RS4R4
CMPB rAL,#0B0H
JE RS4R4
STB RCL,MPCRL[0]
LJMP RS4RE
RS4R4: LDB RAH,MPCR5[0]
ADDB RAH,#6
STB RAH,MPCRL[0]
SJMP RS4RQ
rs4re: LDB SP_CON,#01H
LDB R0,SP_STAT
LDB MPCRFLG,#0FFH
CMPB RBH,R0
JNE RS4RX
LDB MPCRFLG,#55H
RS4RX: CLR RCX
CLRB RBH
rs4rQ: NOP
POPF
RET
;测试RAM子程序
TEST_IRAM:
LD MAX,#22H
LD MBX,#0F8H
SJMP TEST_RAM
TEST_ERAM:
LD MAX,#8000H
CLR MBX
TEST_RAM:
LDB MCL,#55H
STB MCL,[MAX]
LDB MCL,[MAX]
CMPB MCL,#55H
JNE TRAMQ
NOTB MCL
STB MCL,[MAX]
LDB MCL,[MAX]
CMPB MCL,#0AAH
JNE TRAMQ
STB R0,[MAX]+
CMP MAX,MBX
JNE TEST_RAM
TRAMQ: RET
CLRGPSCOD:
DCB 24H,50H,46H,45H,43H
DCB 2CH,47H,50H,69H,6EH,74H
CLRDTM: DCB 2CH,44H,54H,4DH,30H,30H
CLRGGA: DCB 2CH,47H,47H,41H,30H,30H
CLRGSV: DCB 2CH,47H,53H,56H,30H,30H
CLRVTG: DCB 2CH,56H,54H,47H,30H,30H
XXQCOM: DCB 0EBH,90H,0EBH,90H,02H,01H,48H
COM1_TPRO:
NOP
IF COM1FLG=0
SETGPSINT:
JBC SPFLG2,0,SETGPSP0
RET
SETGPSP0:
ORB SPFLG2,#01H
LD MBX,#CLRGPSCOD
LD MDX,#COM1T1
LDBZE MCX,#11
SETGPSP1:
LDB MAL,[MBX]+
STB MAL,[MDX]+
XORB MCH,MAL
DJNZ MCL,SETGPSP1
;DTM,GGA,GSV,VTG
LD MBX,#CLRDTM
LDB MCL,#24
SETGPSP2:
LDB MAL,[MBX]+
STB MAL,[MDX]+
XORB MCH,MAL
DJNZ MCL,SETGPSP2
;* AND CHECKSUM
LDB MAL,#2AH
STB MAL,[MDX]+
ANDB MAL,MAH,#0FH
SHRB MAH,#4
ADDB MBL,MAH,#30H
CMPB MAH,#09H
JNH SETGPSP3
SUBB MBL,#09H
ADDB MBL,#10H
SETGPSP3:
STB MBL,[MDX]+
ADDB MBL,MAL,#30H
CMPB MAL,#09H
JNH SETGPSP4
SUBB MBL,#09H
ADDB MBL,#10H
SETGPSP4:
STB MBL,[MDX]+
LDB MAL,#0DH
STB MAL,[MDX]+
LDB MAL,#0AH
STB MAL,[MDX]+
SUB MDX,#COM1T1
STB MDL,COM1TL[0]
LDB MAL,#07H
STB MAL,COM1IER[0]
RET
ELSE
XXQTPRO:LDB MCL,#7
STB MCL,COM1TL[0]
LD MBX,#XXQCOM
LD MDX,#COM1T1
XXQT1: LDB MAL,[MBX]+
STB MAL,[MDX]+
DJNZ MCL,XXQT1
LDB MAL,#07H
STB MAL,COM1IER[0]
RET
ENDIF
;TL16C554 收发中断子程序
EXINT: PUSHF
EXINTN: LDB KAL,RT_RDY[0]
JBS KAL,1,EXINT4
JBS KAL,0,EXINT3
JBS KAL,3,EXINT2
JBS KAL,2,EXTCOM1
POPF
RET
EXINT4: LJMP EXTCOM4
EXINT3: LJMP EXTCOM3
EXINT2: LJMP EXTCOM2
EXTCOM1:NOP ;EXINT1
LDB KAL,COM1IIR[0]
ANDB KAL,#0FH
CMPB KAL,#04H ;R_DATA VALID?
JE EXTCOM1R
CMPB KAL,#02H ;THRE?
JE EXTCOM12
CMPB KAL,#06H ;R_LINE STATUS?
JNE EXTCOM11
LDB R0,COM1LSR[0]
LJMP EXINTN
EXTCOM11:
CMPB KAL,#0CH ;TIME OUT?
JE EXTCOM1R
CMPB KAL,#00H ;MODEM STATUS?
JNE EXTCOM1Q
LDB R0,COM1MSR[0]
EXTCOM1Q:
LJMP EXINTN
EXTCOM12:
LJMP EXTCOM1T
EXTCOM1R:
JBC SPFLG3,1,EXTCOM1R1
LJMP COM1TESTR
EXTCOM1R1:
JBC COM1BIT,0,EXTCOM1R2
LJMP SPCR
EXTCOM1R2:
JBC COM1BIT,1,GPSRPRO
LJMP GPSRPRO
GPSRPRO:LDB KAH,COM1LSR[0]
JBC KAH,0,EXTCOM1Q
LDB KAL,COM1RBR[0]
INCB COM1RCNT
LDBZE KBX,COM1RCNT
STB KAL,COM1RL[KBX]
CMPB COM1RCNT,#1
JNE GPSRP2
CMPB KAL,#24H ;"$"
JE EXTCOM1R
GPSRP1: CLRB COM1RCNT
ANDB SPFLG2,#0FDH
SJMP EXTCOM1R
GPSRP2: CMPB COM1RCNT,#2
JNE GPSRP3
CMPB KAL,#47H ;"G"
JNE GPSRP1
SJMP EXTCOM1R
GPSRP3: CMPB COM1RCNT,#3
JNE GPSRP4
CMPB KAL,#50H ;"P"
JNE GPSRP1
SJMP EXTCOM1R
GPSRP4: CMPB COM1RCNT,#4
JNE GPSRP5
CMPB KAL,#5AH ;"Z"
JNE GPSRP1
SJMP EXTCOM1R
GPSRP5: JBC SPFLG2,1,GPSRP6
CMPB KAL,#0AH
JE GPSRP8
SJMP GPSRP1
GPSRP6: CMPB KAL,#0DH
JNE GPSRP7
ORB SPFLG2,#02H
GPSRP7: SJMP EXTCOM1R
GPSRP8: ORB RTDATF,#02H
LD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -