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

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

点击数:7303 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   AVR单片机
    com ZH                            ;注:仅只改变T/C中断屏蔽寄存
    in ZL,TIMSK                       ;器中的此项设置,对于其他T/C
    and ZL,ZH                         ;中断状态保留原来设置
    out TIMSK,ZL
    in USARTAI_TEMP,UDR             ;读 USART 数据寄存器使 RXC 标志清除,
                                      ;以结束本次 USART 接收结束中断处理
    ldi ZL,USARTAI_RUPDI            ;置接收作业己更新标志值
    sts USARTAI_RXUPD,ZL
    rjmp USART_RXCINT_RET           ;转到中断返回
USART_RXCINT_First:
    clr ZL                          ;清除接收作业全部结束标志
    sts USARTAI_RXEnd,ZL
    sts USARTAI_T0VNum,ZL           ;定时器/计数器0溢出次数清 0
    in ZL,TIFR                      ;清除T/C0计数溢出标志
    ori ZL,(1<<TOV0)                  ;注:仅只清除T/C中断标志寄存
    out TIFR,ZL                       ;器中的此项标志,对于其他T/C
                                      ;中断标志保留原来状态
    ldi ZL,USARTAI_T0CNTI           ;置T/C0定时参数的预定计数比例值
    out TCNT0,ZL
    in ZL,TIMSK                     ;使能T/C0计数溢出中断
    ori ZL,(1<<TOIE0)                 ;注:仅只改变T/C中断屏蔽寄存
    out TIMSK,ZL                      ;器中的此项设置,对于其他T/C
                                      ;中断状态保留原来设置
    ldi ZL,(1<<CS00)|(0<<CS01)|(1<<CS02)
    out TCCR0,ZL                    ;按CK÷1024 预分频因子启动T/C0
    lds ZL,USARTAI_RXCOM            ;接收作业是否为接收命令
    cpi ZL,USARTAI_RCOMI              ;否,则为接收数据
    breq USART_RXCINT_FCOMM           ;是,就转至接收命令处理
USART_RXCINT_FData:
    ldi ZL,Low(USARTAI_RXDAA)       ;置接收作业地址指针为
    ldi ZH,High(USARTAI_RXDAA)        ;首个接收数据地址指针
    in USARTAI_TEMP,UDR             ;从 USART 数据寄存器取出接收数据
    st Z,USARTAI_TEMP                 ;存储进 SRAM 中
    adiw ZL,$01                     ;接收作业地址指针 + 1
    sts USARTAI_RXAPL,ZL              ;存储回 SRAM 中
    sts USARTAI_RXAPH,ZH
     MOV  USARTAI_RXNum,USARTAI_TEMP  ;置接收作业次数计数器初值
    dec USARTAI_RXNum               ;接收作业次数-1
    rjmp USART_RXCINT_RET           ;转到中断返回
USART_RXCINT_FCOMM:
    ldi ZL,Low(USARTAI_RXCOA)       ;置接收作业地址指针为
    ldi ZH,High(USARTAI_RXCOA)        ;首个接收命令地址指针
    in USARTAI_TEMP,UDR             ;从 USART 数据寄存器取出接收数据
    st Z,USARTAI_TEMP                 ;存储进 SRAM 中
    adiw ZL,$01                     ;接收作业地址指针 + 1
    sts USARTAI_RXAPL,ZL              ;存储回 SRAM 中
    sts USARTAI_RXAPH,ZH
    ldi USARTAI_TEMP,(USARTAI_CMATNI-1) 
                                    ;置接收作业次数计数器初值,
     MOV  USARTAI_RXNum,USARTAI_TEMP    ;第一个命令的字符串己接收
USART_RXCINT_RET:
    pop USARTAI_TEMP                ;弹出堆栈中的标志值到状态寄存器
    out SREG,USARTAI_TEMP

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


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

上一篇:makefile文件讲解

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