总中断
; LDB 7EH,#0EFH
; STB 7EH,3300h[0]
; SJMP LOOP2
; LDB TEST,#01H
; SJMP HERE ;TEST SOFT_TIME
LOOP1: JBC FLAG,0,LOOP1
;保存被召唤的数据,将数据缓冲区3204H~3224H中的数据拷贝到
;以3300H+地址码*21H为首地址的33个字节单元中去
SAVE_DATA:
LD TEMP1,#3203H
LDB TEMP2,3200H[0]
MULUB TEMP2,#21H
ADD TEMP2,#3300H
SAVE_DATA1:
LDB TEMP3,[TEMP1]
STB TEMP3,[TEMP2]
INC TEMP1
INC TEMP2
CMP TEMP1,#3224H
JNE SAVE_DATA1
CLRB FLAG
LOOP2:
LDB TEMP2,3300H[0]
CMPB TEMP2,#0CCH
JNH LOOP1
;主机发送刀闸控制信号00H,要求从机将QF1、QF2跳闸
LDB INTMAS,#40H
LDB TEMP3,3200H[0]
LDB JIAOYAN,#00H
SEND_SWITCH:
LDB CHR,#0AAH
STB CHR,SBUF ;发送起始码AAH
LCALL DELAY
LDB CHR,#01H ;发送接收刀闸信号的地址
STB CHR,SBUF
XORB JIAOYAN,CHR
LCALL DELAY
LDB CHR,#082H
STB CHR,SBUF
XORB JIAOYAN,CHR ;发送刀闸命令
LCALL DELAY
LDB CHR,#01H
STB CHR,SBUF
XORB JIAOYAN,CHR ;发送字节数
LCALL DELAY
LDB CHR,#0BH
STB CHR,SBUF
XORB JIAOYAN,CHR ;发送刀闸动作信号数据
LCALL DELAY
LDB CHR,JIAOYAN
STB CHR,SBUF ;发送校验码
LCALL DELAY
LDB CHR,#0BBH
STB CHR,SBUF ;发送结束码
LDB INTMAS,#60H
SJMP LOOP1
HERE:NOP
NOP
SJMP HERE
;软件定时器服务程序,完成召唤数据和对时功能
SOFT_INT:
DI
PUSHF
LDB HSOCOM,#38H
ADD HSOTIM,TIMER1,#0FFFEH ;定时80ms
; SJMP SOFT_INT
; INCB TEST
; SJMP SOFT_RET ;TEST SOFT_TIME
CMPB S_ADDRESS,#17
JNE CALL_DATA
;若已经向从机1-从机16召唤过数据,则发送一个广播数据包,进行对时
LDB JIAOYAN,#00H
DUISHI:
LDB CHR,#0AAH
STB CHR,SBUF ;发送起始码AAH
LCALL DELAY
LDB CHR,#0FFH ;发送广播地址
STB CHR,SBUF
XORB JIAOYAN,CHR
LCALL DELAY
LDB CHR,#083H
STB CHR,SBUF
XORB JIAOYAN,CHR ;发送对时命令码83H
LCALL DELAY
LDB CHR,#07H
STB CHR,SBUF
XORB JIAOYAN,CH