Вот маленький но работающий пример
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Bill 30 ноября 2004 г. 23:39
В ответ на: Немного уточню. отправлено Bill 30 ноября 2004 г. 23:33


;
; 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 flag

EXTERN 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