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

📄 int_7265.c

📁 HID-Ukey底层源码实现(st72651芯片) windows上层驱动
💻 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 + -