您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机avr异步中断接收和发送通信程序 正文
avr异步中断接收和发送通信程序

avr异步中断接收和发送通信程序

点击数:7303 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   AVR单片机
    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单片机

上一篇:makefile文件讲解

《avr异步中断接收和发送通信程序》相关文章>>>