#ifndef _inrt_inc_ #define _intr_inc_ messg "include 'intr.inc'" LIST ; Title : interrupt ; By : komi ; Last update : 2005.08.31 ; Version : 0.2 NOLIST ;---------------------------------------------------------------------------- ; 解説 ;---------------------------------------------------------------------------- ; ; ●注意 ; このファイルをインクルードすると ; 自動的にコンテキスト保存エリアが確保されます. ; ;---------------------------------------------------------------------------- ; ; ■コンテキスト保存&復帰 ; ・定義 ; SAVE_CONTEXT コンテキスト保存 ; LOAD_CONTEXT 復帰 ; ;---------------------------------------------------------------------------- ;------------------------------------------------------------------ ; コンテキスト保存エリア U_INTR UDATA_SHR W_TEMP res 1 STATUS_TEMP res 1 PCLATH_TEMP res 1 FSR_TEMP res 1 ;------------------------------------------------------------------ ;------------------------------------------------------------------ ; スタートアップ部 START_VECTOR MACRO STARTUP CODE MOVLW HIGH start_main MOVWF PCLATH GOTO start_main NOP GOTO interrupt_main ENDM ;------------------------------------------------------------------ ; メイン開始 MAIN_ROUTINE MACRO C_MAIN CODE start_main: ENDM ;------------------------------------------------------------------ ; 割込許可/禁止 INTERRUPT_ENABLE MACRO BSF INTCON, GIE ENDM INTERRUPT_DISABLE MACRO BCF INTCON, GIE ENDM ;------------------------------------------------------------------ ; TMR0 割込初期化 TMR0_intr_init MACRO BCF INTCON, TMR0IF BSF INTCON, TMR0IE ENDM ;------------------------------------------------------------------ ; TMR2 割込初期化 TMR2_intr_init MACRO banksel PIR1 BCF PIR1, TMR2IF banksel PIE1 BSF PIE1, TMR2IE ENDM ;------------------------------------------------------------------ ; UART 割込初期化 UART_intr_init MACRO banksel PIE1 BSF PIE1, RCIE BCF PIE1, TXIE ENDM ;------------------------------------------------------------------ ; PSP 割込初期化 PSP_intr_init MACRO banksel PIR1 BCF PIR1, PSPIF banksel PIE1 BSF PIE1, PSPIE ENDM ;------------------------------------------------------------------ ; 割込コード開始 INTERRUPT_START MACRO PROG1 CODE interrupt_main: ENDM ;------------------------------------------------------------------ ; 割込コード終了 INTERRUPT_END MACRO RETFIE ENDM ;------------------------------------------------------------------ ; コンテキスト保存 SAVE_CONTEXT MACRO MOVWF W_TEMP SWAPF STATUS, W CLRF STATUS MOVWF STATUS_TEMP MOVF PCLATH, W MOVWF PCLATH_TEMP CLRF PCLATH MOVF FSR, W MOVWF FSR_TEMP pagesel interrupt_main ENDM ;------------------------------------------------------------------ ; コンテキスト復帰 LOAD_CONTEXT MACRO CLRF STATUS MOVF FSR_TEMP, W MOVWF FSR MOVF PCLATH_TEMP, W MOVWF PCLATH SWAPF STATUS_TEMP, W MOVWF STATUS SWAPF W_TEMP, F SWAPF W_TEMP, W ENDM ;------------------------------------------------------------------ ; TMR0割込 TMR0_INTR_START MACRO BTFSS INTCON, TMR0IE GOTO tmr0_intr_end BTFSS INTCON, TMR0IF GOTO tmr0_intr_end BCF INTCON, TMR0IF ENDM TMR0_INTR_END MACRO tmr0_intr_end: ENDM ;------------------------------------------------------------------ ; TMR2割込 TMR2_INTR_START MACRO banksel PIE1 BTFSS PIE1, TMR2IE GOTO tmr2_intr_end banksel PIR1 BTFSS PIR1, TMR2IF GOTO tmr2_intr_end BCF PIR1, TMR2IF ENDM TMR2_INTR_END MACRO tmr2_intr_end: ENDM ;------------------------------------------------------------------ ; PSP割込 PSP_INTR_START MACRO banksel PIE1 BTFSS PIE1, PSPIE GOTO psp_intr_end banksel PIR1 BTFSS PIR1, PSPIF GOTO psp_intr_end BCF PIR1, PSPIF ENDM PSP_INTR_END MACRO psp_intr_end: ENDM ;------------------------------------------------------------------ ; USART受信割込 RC_INTR_START MACRO banksel PIE1 BTFSS PIE1, RCIE GOTO rc_intr_end banksel PIR1 BTFSS PIR1, RCIF GOTO rc_intr_end ENDM RC_INTR_END MACRO rc_intr_end: ENDM ;------------------------------------------------------------------ ; USART送信割込 TX_INTR_START MACRO banksel PIE1 BTFSS PIE1, TXIE GOTO tx_intr_end banksel PIR1 BTFSS PIR1, TXIF GOTO tx_intr_end ENDM TX_INTR_END MACRO tx_intr_end: ENDM ;------------------------------------------------------------------ LIST #endif