|
#include; Define MCU type - ATMega163
;
; Constant definitions
;
#define TIMER0_BIT (1<<0) // Timer0 interrupt flag
#define INT0_BIT (1<<1) ; Int0 interrupt Flag
#define INT1_BIT (1<<2) ; Int1 interrupt Flag
#define ACINT_BIT (1<<3) ; Analog comparator interrupt FlagRSEG UDATA1 ; Global variable area
PUBLIC IntFlags ;
IntFlags: ;
DS 1 ;COMMON INTVEC
; ORG TIMER1_COMP1_vect ;;; Timer1 Compare Match Interrupt handler
; rjmp Timer1Cmp_Int ;;;
; ORG TIMER1_OVF1_vect ;;; Timer1 Overflow interrupt handler
; rjmp Timer1Ov_Int ;;;ORG TIMER0_OVF_vect ;;; Timer0 Overflow interrupt handler
rjmp Timer0Ov_Int ;;;; ORG ANA_COMP_vect ;;; Analog comparator interrupt handler
; rjmp AnComp_Int ;;;RSEG CODE ;;; Handlers code start
Timer0Ov_Int: ;;; Timer0 Overflow interrupt handler
st -Y, R16 ; Save used registers on stack
in R16,SREG ; Save status register
st -Y,R16 ;lds r16, IntFlags ; Set the flag
ori r16, TIMER0_BIT ;
sts IntFlags, r16 ;
ldi r16, 80 ; Reload Timer0
out TCNT0, r16 ; for the 20 mS time intervalld R16,Y+ ; Restore status register
out SREG,R16 ;
ld R16, Y+ ; Restore register R16
reti;AnComp_Int: ;;; Analog comparator interrupt handler
; st -Y, R16 ; Save used registers on stack
; st -Y, r30 ;
; in R16,SREG ; Save status register
; st -Y,R16 ;
;
; ldi r30, IntFlags ; Set the flag
; ld r16, Z ;
; ori r16, ACINT_BIT ;
; st Z, r16 ;
;
; ld R16,Y+ ; Restore status register
; out SREG,R16 ;
; ld r30, Y+ ; Restore Z register
; ld R16, Y+ ; Restore register R16
; retiend
E-mail: info@telesys.ru