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

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

点击数:7303 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   AVR单片机
                                      ;并置发送命令作业标志值
    rcall USART_AINT_TXINI          ;发送本命令字符串
    ret                             ;子程序返回

;*** 此段程序用于发送[接收数据正确]命令 - “USART_TX_COMM_DataOK”
USART_TX_COMM_DataOK:
    rcall USART_TXD_COMM_Head       ;将开头字符串和端口编号复制到 SRAM 中
    ldi ZL,Low(USART_DataOK*2)      ;置 Z 指针为向对方请求发送命令字符串,
    ldi ZH,High(USART_DataOK*2)       ;在 FLASH 中的存储地址
    rcall USART_TXD_COMM_COM        ;将命令字符串复制到 SRAM 的发送地址中,
                                      ;并置发送命令作业标志值
    rcall USART_AINT_TXINI          ;发送本命令字符串
    ret                             ;子程序返回

;*** 此段程序用于发送[要求对方发送指定数据]命令 - “USART_TX_COMM_DCOMTX”
USART_TX_COMM_DCOMTX:
    rcall USART_TXD_COMM_Head       ;将开头字符串和端口编号复制到 SRAM 中
    ldi ZL,Low(USART_DCOMTX*2)      ;置 Z 指针为向对方请求发送命令字符串,
    ldi ZH,High(USART_DCOMTX*2)       ;在 FLASH 中的存储地址
    rcall USART_TXD_COMM_COM        ;将命令字符串复制到 SRAM 的发送地址中,
                                      ;并置发送命令作业标志值
    rcall USART_AINT_TXINI          ;发送本命令字符串
    ret                             ;子程序返回

;*** 此段程序用于发送命令开头字符串和端口编号 - “USART_TXD_COMM_Head”
USART_TXD_COMM_Head:
    ldi YL,Low(USARTAI_TXCOA)       ;置 Y 指针为发送命令 SRAM 中的地址
    ldi YH,High(USARTAI_TXCOA)
    ldi ZL,Low(COMAgreement_Head*2) ;置 Z 指针为向发送命令开头字符串,
    ldi ZH,High(COMAgreement_Head*2)  ;在 FLASH 中的存储地址
    lpm USARTAI_TEMP3,Z+            ;置循环计数器初值=开头命令字长度数值
USART_TXD_COMM_Head1:
    lpm USARTAI_TEMP,Z+             ;从 FLASH 中取出发送命令开头字符串
    st Y+,USARTAI_TEMP              ;装入 SRAM 的发送命令地址中
    dec USARTAI_TEMP3               ;命令字长度数值 — 1
    brne USART_TXD_COMM_Head1       ;装入完成否?
USART_TXD_COMM_HeadDN:
    ldi EEPROM_AddrL,Low(CC_EEPROM_DNAr)
    ldi EEPROM_AddrH,High(CC_EEPROM_DNAr)
                                    ;置在 EEPROM 中的本端口编号地址指针
    ldi USARTAI_TEMP3,CTRLCDN_CharNI;置循环计数器初值=本端口编号长度数值
USART_TXD_COMM_HeadDN1:
    call EEPROM_ReadSingle          ;读取 EEPROM 中的本 USART 端口编号
     MOV  USARTAI_TEMP2,EEPROM_Data
    st Y+,USARTAI_TEMP2             ;装入 SRAM 的发送命令地址中
    adiw EEPROM_AddrL,$01           ; EEPROM 中的端口编号地址指针 + 1
    dec USARTAI_TEMP3               ;端口编号字符串长度数值长度数值 — 1
    brne USART_TXD_COMM_HeadDN1     ;端口编号装入完否?未完,则继续装入
    ret                             ;子程序返回

;*** 此段程序用于发送命令字符串公共子程序 - “USART_TXD_COMM_COM”
USART_TXD_COMM_COM:
    lpm USARTAI_TEMP,Z+             ;从 FLASH 中取出首个发送命令字符
    st Y+,USARTAI_TEMP              ;装入 SRAM 的发送命令地址中
    lpm USARTAI_TEMP,Z+             ;从 FLASH 中取出下一个发送命令字符
    st Y+,USARTAI_TEMP              ;装入 SRAM 的发送命令地址中
    lpm USARTAI_TEMP,Z+             ;从 FLASH 中取出下一个发送命令字符
    st Y+,USARTAI_TEMP              ;装入 SRAM 的发送命令地址中
    ldi USARTAI_TEMP,USARTAI_TCOMI  ;置发送命令作业标志值
    sts USARTAI_TXCOM,USARTAI_TEMP
    ret                             ;子程序返回


;*******************************************************************************

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]  下一页


本文关键字:通信  程序  AVR单片机单片机-工控设备 - AVR单片机

上一篇:makefile文件讲解

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