📄 kernel.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** http://www.zlgmcu.com
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 刘英斌
** 日 期:2003-03-13
** 描 述:ISP1581 V1.0
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "standard.h"
#include "Kernel.h"
#include "D14.h"
//***********************************************************************
//* *
//* External routine Definition *
//* *
//***********************************************************************
extern Init_Main();
extern USB_Debug_Mode();
extern DMA_Debug_Mode();
extern USB_INT_FLAG USB_Int_Flag;
extern DMA_INT_FLAG DMA_Int_Flag;
extern USB_DEVICE USB_Device;
extern volatile D14_CNTRL_REG xdata D14_Cntrl_Reg;
extern void Check_Busy(void);
extern void Init_D14(void);
extern void Init_Endpoint(void);
extern void Init_Device(void);
extern void Get_PIDVID(void);
extern unsigned int read_endpoint(unsigned char endp,unsigned int len,unsigned char *buf);
extern unsigned int write_endpoint(unsigned char endp,unsigned int len,unsigned char *buf);
extern UC VID[2],PID[2];
extern UC idata Endpt_FIFO[MAX_BUF];
extern Set_USB(void);
extern TIMER Timer;
//***********************************************************************
//* *
//* Prototype routine Definition *
//* *
//***********************************************************************
void Start_mSEC_Timer(Data);
void Start_SEC_Timer(Data);
//***********************************************************************
//* *
//* Variable Definition *
//* *
//***********************************************************************
UI Temp;
KERNEL Kernel_Flag;
//***********************************************************************
//* *
//* Routine Definition *
//* *
//***********************************************************************
//***********************************************************************
//* *
//* Routine : Main *
//* Input : None *
//* Output : None *
//* Function : main loop *
//* *
//***********************************************************************
void Main(void)
{
unsigned int a;
unsigned char b[16];
//Initialization routine
//初始化子程序
Init_Main();
//enable device and reset the device address
D14_Cntrl_Reg.D14_MODE.BITS.SOFTCT = 1;
do
{
//USB routine
USB_Debug_Mode();
//Generic DMA routine
DMA_Debug_Mode();
if (USB_Int_Flag.BITS.EP1RX)
{
USB_Int_Flag.BITS.EP1RX = 0;
a=read_endpoint(0x02,8,b);
b[0]=0;
b[1]=0x12;
b[2]=0x12;
b[3]=0x12;
}
a=write_endpoint(0x03,4,b);
}
while(1);
}
//***********************************************************************
//* *
//* Routine : Start_mSEC_Timer(Delay) *
//* Input : Delay in milli second *
//* Output : Start timer operation *
//* Function : To start the timeout operation based on the delay i/p *
//* *
//***********************************************************************
void Start_mSEC_Timer(Data)
{
do
{
//calculate timer value
Temp = Timer.mSEC_Scale;
Temp = 0xffff - Temp;
ET0 = 1;
//calculate timer value
//initialize timer 0 counter
Temp >>= 8;
TH0 = (UC) Temp;
Temp = Timer.mSEC_Scale;
Temp = 0xffff - Temp;
TL0 = (UC) Temp;
//start timer count
TR0 = 1;
Kernel_Flag.BITS.Timer_Expired = 0;
while(!Kernel_Flag.BITS.Timer_Expired);
Kernel_Flag.BITS.Timer_Expired = 0;
//stop timer
TR0 = 0;
ET0 = 0;
Data--;
}
while(Data != 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -