|
;
; Interrupt handlers
;
; File: intrupts.s90
;
; 17-Apr-00 BK Initial edit
; 01-Oct-01 BK Last update
;#include
; Define MCU type - AT90S2333
;;;#include; Define MCU type - AT90S2313
#include "DMX512.h"#ifdef __IO2313_INCLUDED
#define TIMER1_OVF_vect TIMER1_OVF1_vect
#define TIMER0_OVF_vect TIMER0_OVF0_vect
#endif;
; Flags bit definitions
;
#define OFF_LINE_MODE (1<<3) ; Off line flag
#define BYTE_RECEIVED (1<<2) ; Byte is received flagEXTERN Flags, RxByte ; Global variable reference
COMMON INTVEC
ORG TIMER1_OVF_vect ;;; Timer1 Overflow interrupt handler
rjmp Timer1Ov_Int ;;;;;; ORG TIMER0_OVF_vect ;;; Timer0 Overflow interrupt handler
;;; reti ;;;ORG UART_RX_vect ;;; UART receiver interrupt handler
rjmp UART_RX_Int ;;;RSEG CODE ;;; Handlers code start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Timer1Ov_Int: ;;; Timer1 Overflow interrupt handler
st -Y, r30 ; Save used register on stack
st -Y,R19 ;
in R19,SREG ; Save status register
st -Y,R19 ;ldi r30, Flags ;
ld r19, Z ; Set OFF LINE mode flag
ori r19, OFF_LINE_MODE ;
st Z, r19 ;ld R19,Y+ ; Restore status register
out SREG,R19 ;
ld R19,Y+ ;
ld r30, Y+ ;
reti
UART_RX_Int: ;;; UART receiver interrupt handler
st -Y, r30 ; Save used registers on stack
st -Y,R19 ;
in R19,SREG ; Save status register
st -Y,R19 ;ldi r30, Flags ;
ld r19, Z ; Set the flag
sbr r19, BYTE_RECEIVED ;
cbr r19, OFF_LINE_MODE ; Reset off line mode flag
st Z, r19 ;
clr r19 ; Reset time-out counter
out TCNT1H, r19 ;
out TCNT1L, r19 ;
ldi r30, RxByte ; Read the received byte
in r19, UDR ;
st z, r19 ;ld R19,Y+ ; Restore status register
out SREG,R19 ;
ld R19,Y+ ;
ld r30, Y+ ;
reti
end
E-mail: info@telesys.ru