usbd12_b.c

来自「USB便携多道系统单片机固件程序.单片机固件程序采用CodeWarrior De」· C语言 代码 · 共 118 行

C
118
字号
//===================================================================//
//     Project Name : MOTOROLA-PDIUSBD12 USB-MCS CARD
//      Module Name : Master Firmware Program
//     Product Type : License
//      OS/Dev Tool : CodeWarrior Development Studio for HC(S)08 Microcontrollers
//  Original Author : Ming Zeng
//     Organization : Tsinghua University , DEP 
//    Original Date : Feb, 20, 2003
//             Addr : Tsinghua University, Beijing City
//              TEL : 
//            EMail : ming@zming.net
//          Website : http://www.zming.net
//		  Copyright : Copyright ZMing.net, 2003
//         Comments : 
//                    
//			
//===================================================================//

#include "HAL.H"
#include "COMMON.H"
#include "USBD12.H"
#include "VDOR.H"

extern COMMONFLAGS bCOMMONFlags;
extern unsigned char  GenBuf[GENBUF_LENGH];
extern unsigned char nFlashPhase;
extern CODE_DATA CodeData;

/* 目前未使用
void USBD12_SendResume(void)
{
	outportb(IC_D12_COMMAND, 0xF6);
}

unsigned short USBD12_ReadCurrentFrameNumber(void)
{
	unsigned short i,j;

	if(bCOMMONFlags.bits.bIN_ISR == 0)
		DisableInterrupts;

	outportb(IC_D12_COMMAND, 0xF5);
	i= inportb(IC_D12_DATA);
	j = inportb(IC_D12_DATA);

	i += (j<<8);

	if(bCOMMONFlags.bits.bIN_ISR == 0)
		EnableInterrupts;

	return i;
}
*/ 

unsigned char USBD12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
{
	unsigned char i;

	if(bCOMMONFlags.bits.bIN_ISR == 0)
		DisableInterrupts;

	outportb(IC_D12_COMMAND, endp);
	inportb(IC_D12_DATA);

	outportb(IC_D12_COMMAND, 0xF0);
	outportb(IC_D12_DATA, 0);
	outportb(IC_D12_DATA, len);

	for(i=0; i<len; i++)
		outportb(IC_D12_DATA, *(buf+i));

	outportb(IC_D12_COMMAND, 0xFA);

	if(bCOMMONFlags.bits.bIN_ISR == 0)
		EnableInterrupts;

	return len;
}

unsigned char USBD12_WriteEndpointOnce(unsigned char endp, unsigned char * buf, unsigned char len)
{
	unsigned char i;

	if(bCOMMONFlags.bits.bIN_ISR == 0)
		DisableInterrupts;

	outportb(IC_D12_COMMAND, endp);
	inportb(IC_D12_DATA);

	outportb(IC_D12_COMMAND, 0xF0);
	outportb(IC_D12_DATA, 0);
	outportb(IC_D12_DATA, len);

	for(i=0; i<len; i++)
		{
		outportb(IC_D12_DATA, *(buf+i));
		*(buf+i) = 0;
		}

	outportb(IC_D12_COMMAND, 0xFA);

	if(bCOMMONFlags.bits.bIN_ISR == 0)
		EnableInterrupts;

	return len;
}

void USBD12_AcknowledgeEndpoint(unsigned char endp)
{
	outportb(IC_D12_COMMAND, endp);
	outportb(IC_D12_COMMAND, 0xF1);
	if(endp == 0)
		outportb(IC_D12_COMMAND, 0xF2);
}



⌨️ 快捷键说明

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