⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dc550_interrupt.h

📁 一款经典的数字电话设计资料
💻 H
字号:
/*****************************************************************************/
/*  CONFIDENTIAL                                                             */
/*  Sigpro Copyright 2003, All rights reserved                               */
/*****************************************************************************/
/*  CLIENT:  Telematrix                                                      */
/*  PROJECT: DC550 Digital Centrex Phone                                     */
/*  FILE:    dc550_interrupt.h                                               */
/*****************************************************************************/
/*  This is the header file for dc550_interrupt.s43, an assembly file        */
/*  containing all of the interrupt handler routines.                        */
/*****************************************************************************/

#ifndef DC550_INTERRUPT_HEADER
#define DC550_INTERRUPT_HEADER

#define INTERRUPT_BUZZERFREQUENCY     8

#ifndef __ASSEMBLY__

/******************************************************************************
 *  FUNCTION PROTOTYPES
 *****************************************************************************/
void interrupt_init(void);

/******************************************************************************
 *  GLOBAL VARIABLES
 *****************************************************************************/
extern volatile unsigned int interrupt_counter;
extern volatile unsigned int interrupt_state;
extern volatile unsigned int interrupt_rxmessage;
extern volatile unsigned int interrupt_txmessage;
extern volatile char interrupt_rxready;
extern volatile char interrupt_txready;
extern volatile unsigned int interrupt_buzzercounter;


#else  /* __ASSEMBLY__ */

/* Assembly Language Macros
 */
ADD_SAMPLE MACRO
        LOCAL   add0,add1,add2,add3,addret
        ADD     sine_sum,&sin_win_sum
        ADD     cosine_sum,&cosin_win_sum
        ADD     winIdx,pc
        JMP     add0
        JMP     add1
        JMP     add2
add3:   MOV     sine_sum,sin_val_3
        MOV     cosine_sum,cosin_val_3
        MOV     #0,&winIdx
        MOV     #4,&numWinSamples
        JMP     addret
add2:   MOV     sine_sum,sin_val_2
        MOV     cosine_sum,cosin_val_2
        MOV     #6,&winIdx
        JMP     addret
add1:   MOV     sine_sum,sin_val_1
        MOV     cosine_sum,cosin_val_1
        MOV     #4,&winIdx
        JMP     addret
add0:   MOV     sine_sum,sin_val_0
        MOV     cosine_sum,cosin_val_0
        MOV     #2,&winIdx
addret:
        ENDM

ADD_SAMPLE_DONTADD MACRO
        LOCAL   dont0,dont1,dont2,dont3,dontret
        ADD     sine_sum,&sin_win_sum
        ADD     cosine_sum,&cosin_win_sum
        ADD     winIdx,pc
        JMP     dont0
        JMP     dont1
        JMP     dont2
dont3:  MOV     #0,&winIdx
        MOV     #4,&numWinSamples
        JMP     dontret
dont2:  MOV     #6,&winIdx
        JMP     dontret
dont1:  MOV     #4,&winIdx
        JMP     dontret
dont0:  MOV     #2,&winIdx
dontret:
        ENDM

ADD_SAMPLE_WINFULL MACRO
        LOCAL   full3,full2,full1,full0,fullret
        ADD     sine_sum,&sin_win_sum
        ADD     cosine_sum,&cosin_win_sum
        ADD     winIdx,pc
        JMP     full0
        JMP     full1
        JMP     full2
full3:  SUB     sin_val_3,&sin_win_sum
        SUB     cosin_val_3,&cosin_win_sum
        MOV     sine_sum,sin_val_3
        MOV     cosine_sum,cosin_val_3
        MOV     #0,&winIdx
        JMP     fullret
full2:  SUB     sin_val_2,&sin_win_sum
        SUB     cosin_val_2,&cosin_win_sum
        MOV     sine_sum,sin_val_2
        MOV     cosine_sum,cosin_val_2
        MOV     #6,&winIdx
        JMP     fullret
full1:  SUB     sin_val_1,&sin_win_sum
        SUB     cosin_val_1,&cosin_win_sum
        MOV     sine_sum,sin_val_1
        MOV     cosine_sum,cosin_val_1
        MOV     #4,&winIdx
        JMP     fullret
full0:  SUB     sin_val_0,&sin_win_sum
        SUB     cosin_val_0,&cosin_win_sum
        MOV     sine_sum,sin_val_0
        MOV     cosine_sum,cosin_val_0
        MOV     #2,&winIdx
fullret:
        ENDM

CALC_SQUARES MACRO
        MOV     &sin_win_sum,&MPYS
        MOV     &sin_win_sum,&OP2
        MOV     &cosin_win_sum,&MACS
        MOV     &cosin_win_sum,&OP2
        MOV     &RESHI,R4
        MOV     &RESLO,R5
        RLA     R5
        RLC     R4
        RLA     R5
        RLC     R4
        RLA     R5
        RLC     R4
        RLA     R5
        RLC     R4
        RLA     R5
        RLC     R4
        RLA     R5
        RLC     R4
        ENDM

#endif  /* __ASSSEMBLY__ */
#endif  /* DC550_INTERRUPT_HEADER */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -