📄 int_7265.c
字号:
/**************** (c) 2000 STMicroelectronics **********************
PROJECT : USB - ST7 FULL SPEED
VERSION : v 0.96
CREATION DATE : 01/12/2000
AUTHOR : MICROCONTROLLER DIVISION / ST Rousset
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
MODIFICATIONS :
******************************************************************************/
#include "mcu_conf.h"
#include "MConfig.h"
#include "MAL.h"
#include "MAL_Func.h"
#include "HID_usb.h"
#include "UARTT0.h"
#pragma DATA_SEG DTC_RAM
extern unsigned char DTC_RAM[256]; // RAM DTC
/* ************************ INTERRUPT FUNCTIONS *******************************/
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_Trap
DESCRIPTION : TRAP interrupt routine.
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC //SAVE_REGS
void dummy(void)
{
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_I2c
DESCRIPTION : Comes from the I2C cell.
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC //SAVE_REGS
void INT_I2c(void)
{
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_DTC
DESCRIPTION : Comes from the FCI cell
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC SAVE_REGS
void INT_DTC(void)
{
// Dispatch the interrupt processing to different MAL_XXX
asm {
LD X, MAL_Mediano
SLL X
LD A, (MAL_DTC_Int:1,X)
LD _LEX:1, A
LD A, (MAL_DTC_Int,X)
LD _LEX, A
CALL [_LEX.w]
}
// (*MAL_DTC_Int[MAL_Mediano])();
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_TIM
DESCRIPTION : Comes from the TIM cell.
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC SAVE_REGS
void INT_TIM(void) // @jin
{
if ( TSR & 0x08 ) {
asm LD A, TSR
asm LD A, OCLR2
asm LD A, OCHR2
}
else if ( TSR & 0x20 ) {
asm LD A, TSR
asm LD A, CRL
asm LD A, TSR
}
else if ( TSR & 0x40 ) { // it's interrupt of compare register 1
asm LD A, OCLR1 // CLEAR OCF1
if ( bCardSendFlag ) { // the operation is send data to card
asm {
LD A, OCLR1
RCF
ADD A, #$0B7
LD OCLR1, A
LD A, OCHR1
ADC A, #0
LD OCHR1, A
LD A, OCLR1
LD OCLR1, A
}
T0SendData();
}
else { // the operation is receive data from card
CRL = 0xff; // RESET TIMER COUNT
T0ReceiveData();
}
}
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_EI1
DESCRIPTION : External Interrupt
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC SAVE_REGS
void INT_EI1(void)
{
//------------------ I/O ports initialization ----------
//Init_port();
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_EI0
DESCRIPTION : External Interrupt
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC SAVE_REGS
void INT_EI0(void)
{
//Init_port();
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_DEVCONINT
DESCRIPTION : Comes from the I2C cell.
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC //SAVE_REGS
void INT_DEVCONINT(void)
{
/* // Power Mngt with battery
PFDDR =0x00;
CTLR &=0xFD;
WDGCR = 0xC0;
while(1)
{
asm NOP
}
*/
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_ITFLA
DESCRIPTION : Comes from the Flash.
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC //SAVE_REGS
void INT_ITFLA(void)
{
}
#pragma DATA_SEG STACK_SEG
unsigned char Stack[256];
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_Trap
DESCRIPTION : TRAP interrupt routine.
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC //SAVE_REGS
void INT_Trap(void)
{
asm {
ld Y, S
sla X // Index
add A, (MAL_Func:0x01,X)
ld (Stack:5,Y), A
clr A
adc A, (MAL_Func,X)
ld (Stack:4,Y), A
}
}
/*-----------------------------------------------------------------------------
ROUTINE NAME : INT_EI2
DESCRIPTION : External Interrupt
-----------------------------------------------------------------------------*/
#pragma TRAP_PROC //SAVE_REGS
void INT_EI2(void)
{
asm
{
BRES PCOR, #4 // PC4 from Interrupt In to Nomal In
CALL StartReceiveETUCount
}
}
/**************** (c) 2000 STMicroelectronics **********************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -