rcall USART_RX_COMM_REPTX ;是,调用处理此条命令处理程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM4:
ldi ZL,Low(USART_DCOMTX*2) ;置“要求我方发送指定数据”命令地址指针
ldi ZH,High(USART_DCOMTX*2)
ldi CTRLCOM_CNT,USARTAI_CMANI ;置计数器初值=有效命令字长度数值
rcall CTRLCOMM_IdentifyCOM ;对此条命令进行识别
cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否为“要求我方发送指定数据”?
brne USART_RXD_COMM5 ;否,则继续
rcall USART_RX_COMM_DCOMTX ;是,调用处理此条命令处理程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM5:
ldi ZL,Low(USART_OKRX*2) ;置“允许我方发送数据”命令地址指针
ldi ZH,High(USART_OKRX*2)
ldi CTRLCOM_CNT,USARTAI_CMANI ;置计数器初值=有效命令字长度数值
rcall CTRLCOMM_IdentifyCOM ;对此条命令进行识别
cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否为“允许我方发送数据”?
brne USART_RXD_COMM6 ;否,则继续
rcall USART_RX_COMM_OKRX ;是,调用处理此条命令处理程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM6:
ldi ZL,Low(USART_REPINI*2) ;置“要求我方重新初始化”命令地址指针
ldi ZH,High(USART_REPINI*2)
ldi CTRLCOM_CNT,USARTAI_CMANI ;置计数器初值=有效命令字长度数值
rcall CTRLCOMM_IdentifyCOM ;对此条命令进行识别
cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否为“要求我方重新初始化”?
brne USART_RXD_COMM7 ;否,则继续
rcall USART_RX_COMM_REPINI ;是,调用处理此条命令处理程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM7:
ldi ZL,Low(USART_RINIOK*2) ;置“对方重新初始化完成”命令地址指针
ldi ZH,High(USART_RINIOK*2)
ldi CTRLCOM_CNT,USARTAI_CMANI ;置计数器初值=有效命令字长度数值
rcall CTRLCOMM_IdentifyCOM ;对此条命令进行识别
cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否为“对方重新初始化完成”?
brne USART_RXD_COMM8 ;否,则继续
rcall USART_RX_COMM_RINIOK ;是,调用处理此条命令处理程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM8:
ldi ZL,Low(USART_CTRLCOM*2) ;置“传送控制操作指令”命令地址指针
ldi ZH,High(USART_CTRLCOM*2)
ldi CTRLCOM_CNT,USARTAI_CMANI ;置计数器初值=有效命令字长度数值
rcall CTRLCOMM_IdentifyCOM ;对此条命令进行识别
cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否为“传送控制操作指令”?
brne USART_RXD_COMM_Error ;否,转至接收错误处理
rcall USART_RX_COMM_CTRLCOM ;是,调用处理此条命令处理程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM_Error:
rcall USART_RXD_Error ;调用接收错误处理子程序
rjmp USART_RXD_COMM_RET
USART_RXD_COMM_NOADDR:
clr ZL ;清除接收作业己更新标志
sts USARTAI_RXUPD,ZL
USART_RXD_COMM_RET:
ret ;子程序返回
;*** 此段程序用于接收到[传送控制操作指令]命令处理
USART_RX_COMM_CTRLCOM:
lds ZL,DataUPD_RXALW ;接收数据是否己处理?
cpi ZL,DataUPD_RALWI ;是,继续
breq USART_RX_COMM_CTRLCOM_RET ;否,返回,等待处理接收数据
lds ZL,USARTAI_TXEnd ;发送作业是否全部结束?
cpi ZL,USARTAI_TEndI ;是,继续
brne USART_RX_COMM_CTRLCOM_RET ;否,返回,等待发送作业结束
lds ZL,CTRLCOM_MALWS ;是否有正在处理控制操作指令?
cpi ZL,CTRLCOM_MALWSI ;否,继续
breq USART_RX_COMM_CTRLCOM_RET ;是,返回,等待处理控制操作指令结束
rcall USART_TX_COMM_OKRX ;向对方发送“允许对方发送”命令
clr ZL ;清除接收命令作业标志
sts USARTAI_RXCOM,ZL
ldi ZL,CTRLCOM_MALWSI ;置允许处理控制操作指令标志值
sts CTRLCOM_MALWS,ZL
ldi ZL,CCTSSDV_USARTI ;置控制操作指令发送者标志值
sts CCOM_TSourceS,ZL ;为 USART 端口送来控制操作指令
clr ZL ;清除接收作业己更新标志
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] 下一页
本文关键字:通信 程序 AVR单片机,单片机-工控设备 - AVR单片机