www.pudn.com > CAN_USB.rar > soft.h


//输出数据 
void outportb(UINT addr, UINT data) 
{	 
	if(addr == D12_DATA_SOFT) 
	{ 
		PTM_PTM7 = 0; 
		PORTB_BIT0 = 0; 
	} 
	else 
	{ 
		PTM_PTM7 = 1; 
		PORTB_BIT0 = 1; 
	} 
	 
	DDRA = 0xFF; 
	PORTA = data; 
	 
	D12_WR_0 
	D12_WR_1 
} 
 
//输入数据 
UINT inportb(UINT addr) 
{	 
	UINT rt; 
	 
	if(addr == D12_DATA_SOFT) 
	{ 
		PTM_PTM7 = 0; 
		PORTB_BIT0 = 0; 
	} 
	else 
	{ 
		PTM_PTM7 = 1; 
		PORTB_BIT0 = 1; 
	} 
	 
	DDRA = 0x00;	 
	D12_RD_0	 
	D12_RD_1 
	rt = PORTA; 
	 
	return rt; 
} 
 
UINT D12_ReadChipID_Soft() 
{ 
	UINT i,j; 
 
	outportb(D12_COMMAND, 0xFD); 
	i=inportb(D12_DATA_SOFT); 
	j=inportb(D12_DATA_SOFT); 
	i = (0x00FF & i) + (0xFF00 & (j<<8)); 
	 
	return i; 
} 
 
//模式设置 
void D12_SetMode_Soft(UINT bConfig, UINT bClkDiv) 
{ 
	outportb(D12_COMMAND, 0xF3);//设置模式 
	outportb(D12_DATA_SOFT, bConfig); 
	outportb(D12_DATA_SOFT, bClkDiv); 
} 
 
void Soft_Init() 
{ 
	//软时序初始化  
		//PORTM 
	DDRM_DDRM6 = 1;//输出 
	DDRM_DDRM7 = 1;//输出 
	 
	// DMA传输 PORTH 
	DDRH_DDRH0 = 0;//输入 
	DDRH_DDRH1 = 1;//输出 
	DDRH_DDRH2 = 1;//输出 
	 
	// LED显示端口 POTRP 
	DDRP = 0xFF;//输出 
	 
	DDRA = 0xFF; 
	DDRB = 0xFF; 
	DDRE = 0xFF; 
	PEAR_NECLK = 1;	 
	PEAR_RDWE = 0; 
	 
	D12_SetMode_Soft(0x02,0x42); 
	Delay(10000); 
    if(D12_ReadChipID_Soft() != 0x1012) 
	{ 
		Set_LED(0x55); 
		while(1);//设置时钟出错! 
	} 
	Set_LED(0x00); 
}