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

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

点击数:7303 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   AVR单片机
;*   ⑩.“COMXXXXCIT”[从 USART 端口传送控制操作指令],此命令用于通知对方下
;* 面接着发送的数据为控制操作指令字符串,其字符串的第一个字节也为数据长度字符,
;* 但字符串的数值有无 CRC 校验码都可以,有 CRC 校验码时长度值相应也加 2 个。发送
;* 和回应控制操作指令字符串的通信协议遵循发送数据方式。接收方在收到控制操作指令
;* 字符串后,可能会发回三种回应协议命令:
;* ⑴.无法正确识别控制操作指令字符串的内容,表示接收到的指令错误或受到干扰,将
;*    发回要求对方重新发送命令字符串“COMXXXXRPT”。
;* ⑵.己经完成了控制操作指令字符串的内容指定的操作程序,将发回接收数据正确命令
;*    字符串“COMXXXXOKD”。
;* ⑶.控制操作指令字符串的内容为要求向其发送指定的数据,将发回请求发送数据命令
;*    字符串“COMXXXXATX”。
;* 
;* 注释: 
;*   ①.定时器/计数器0用于约束接收作业全部完成(指从接收第一个数据到最后一
;* 个数据之间)的时间范围,如果在规定的时间内没有接收作业全部完成,则强制结束
;* 此次接收作业,以便下次接收作业正确操作。其定时时间应略大于在约定双方通信的
;* 波特率下接收完 256 个字节所用的时间总和。
;*   ②.当收发命令字符串“COMXXXXRPT”超过 16 次时,即双方接收和发送无论是数
;* 据还是协议命令只要其错误总次数超过 16 次,那么就认为双方通信处于不同步状态,
;* 或通信协议命令混乱。系统将会首先重新初始化本身的 USART 端口状态和数据处理状
;* 态,然后向对方发送要求对方重新初始化 USART 端口状态命令字符串“COMXXXXRII”,
;* 以使双方通信重新处于同步状态。
;*                
;*******************************************************************************
;*
;* 指令条数:          1398 + return
;* 指令执行周期:      0 + return
;* 低位寄存器使用:    2 (r5,r6)(注:此两个为全局寄存器变量,不得被其他程序使用)
;* 高位寄存器使用:    5 (r16,r17,r18,r19,r20)
;* 指针寄存器使用:    Y,Z
;*
;*******************************************************************************

;******** 本程序需调用的子程序定义:

.include   "DataCheck_CRC2B.asm"    ;包括2字节数据循环冗余检测校验子程序


;******** 依据硬件设置需修改的 SRAM 存储地址定义:

.equ    USARTAI_TXCOM  = $0070      ;发送命令作业标志
.equ    DataUPD_TXALW  = $0071      ;允许更新发送数据标志
.equ    USARTAI_TXEnd  = $0072      ;发送作业全部结束标志
.equ    USARTAI_TXAPL  = $0074      ;发送地址指针低字节
.equ    USARTAI_TXAPH  = $0075      ;发送地址指针高字节
.equ    USARTAI_TXCOA  = $0076      ;首个发送命令字符地址
                                      ;要再占用往下的 10 个字节位置
.equ    USARTAI_TXDAA  = $0080      ;首个发送数据地址
                                      ;要再占用往下的 255 个字节位置

.equ    USARTAI_RXCOM  = $0182      ;接收命令作业标志
.equ    DataUPD_RXALW  = $0183      ;允许处理接收数据标志
.equ    USARTAI_RXUPD  = $0184      ;接收作业己更新标志
.equ    USARTAI_RXEnd  = $0185      ;接收作业全部结束标志
.equ    USARTAI_RXAPL  = $0186      ;接收作业地址指针低字节
.equ    USARTAI_RXAPH  = $0187      ;接收作业地址指针高字节
.equ    USARTAI_RXCOA  = $0188      ;首个接收命令字符地址
                                      ;要再占用往下的 10 个字节位置
.equ    USARTAI_RXDAA  = $0192      ;首个接收数据地址
                                      ;要再占用往下的 255 个字节位置

.equ    USARTAI_ERRNum = $0293      ;USART 发生收发错误次数计数器
.equ    USARTAI_T0VNum = $0294      ;定时器/计数器0溢出次数计数器


;*** 波特率(bps)常数定义:
;下面波特率设置以 单片机 的时钟= 11.0592 MHz ,且不打开倍速的条件下进行定义。
;波特率(bps) = 115.2 Kbps,误差 = 0.0%
.equ    USARTAI_UBRRL  = $05
.equ    USARTAI_UBRRH  = 0

;*** 定时器/计数器0定时 2 秒常数定义:
;下面定时器/计数器0定时参数设置以 单片机 的时钟= 11.0592 MHz ,且定时器/计数
;器0的预分频因子 = 1024 进行的条件下定义。其计算公式如下:
;定时时间 = 1 ÷  单片机 的时钟频率 × 1024 × USARTAI_T0CNT × USARTAI_T0Num
.equ    USARTAI_T0CNTI = $80        ;定时器/计数器0计数预定比例值
.equ    USARTAI_T0NumI = $03        ;定时器/计数器0溢出次数值


;*******************************************************************************
;*
;* 通用同步和异步串行接收器和转发器(USART)异步中断接收和发送通信程序:
;*
;* “USART_AINT_INI” --- USART 异步通信中断接收和发送初始化子程序
;*
;* “USART_RXCINT”------ USART 异步通信接收结束中断处理子程序。
;*
;* “USART_TXDREINT”---- USART 异步通信数据寄存器空中断发送处理子程序。
;*
;* “USART_INT_ACOM”---- USART 异步通信中断接收与发送协议命令和数据处理子程序
;*
;*******************************************************************************


;******** 全局程序寄存器变量定义(不得被其他程序使用):
.def    USARTAI_RXNum  = r5         ;接收作业次数寄存器
.def    USARTAI_TXNum  = r6         ;发送作业次数寄存器

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


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

上一篇:makefile文件讲解

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