📄 dc550_interrupt.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 + -