Blame | Last modification | View Log | Download | RSS feed
#include <avr/io.h>#include "_global.h"#include "_uart.h";;------------------------------------------------------------------------------;.global USART1_RX_vect.func USART1_RX_vectUSART1_RX_vect:push r18in r18,_SFR_IO_ADDR(SREG)push r18push r19push r26lds r18,_SFR_MEM_ADDR(UDR1)lds r19,uart_rx_hdlds r26,uart_rx_tlsecsbc r26,r19andi r26,U_RX_MASKbreq .L_urx9push r27ldi r26,lo8(uart_rxbuff)ldi r27,hi8(uart_rxbuff)add r26,r19brcc .L_urx1inc r27.L_urx1:st X,r18inc r19andi r19,U_RX_MASKsts uart_rx_hd,r19lds r26,flags1andi r26,RTSCTS_FLOWCTRLbreq .L_urx2lds r26,uart_rx_tlsecsbc r26,r19andi r26,U_RX_MASKcpi r26,21brcc .L_urx2sbi _SFR_IO_ADDR(PORTD),5 ; set RTS.L_urx2:pop r27.L_urx9:pop r26pop r19pop r18out _SFR_IO_ADDR(SREG),r18pop r18reti.endfunc;;------------------------------------------------------------------------------;.global USART1_UDRE_vect.func USART1_UDRE_vectUSART1_UDRE_vect:push r18in r18,_SFR_IO_ADDR(SREG)push r18push r19lds r19,uart_tx_tllds r18,uart_tx_hdcp r18,r19breq .L_utx1lds r18,flags1andi r18,RTSCTS_FLOWCTRLbreq .L_utx2sbic _SFR_IO_ADDR(PINB),6rjmp .L_utx1.L_utx2:push r26push r27ldi r26,lo8(uart_txbuff)ldi r27,hi8(uart_txbuff)add r26,r19brcc .L_utx3inc r27.L_utx3:ld r18,Xsts _SFR_MEM_ADDR(UDR1),r18inc r19andi r19,U_TX_MASKsts uart_tx_tl,r19pop r27pop r26rjmp .L_utx9.L_utx1:lds r18,_SFR_MEM_ADDR(UCSR1B)cbr r18,(1<<UDRIE1)sts _SFR_MEM_ADDR(UCSR1B),r18.L_utx9:pop r19pop r18out _SFR_IO_ADDR(SREG),r18pop r18reti.endfunc;;------------------------------------------------------------------------------