Ответ: Ну например так (IAR версия)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 24 сентября 2003 г. 17:54
В ответ на: Всё так и сделано, но как... отправлено cipher 24 сентября 2003 г. 17:42


#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 Flag

RSEG 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 interval

ld 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
; reti

end


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru