注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
zj_zane的个人空间 https://home.eeworld.com.cn/space-uid-299730.html [收藏] [复制] [分享] [RSS]
日志

stm8s +pdiusbd12 无法读ID,请指教

已有 1665 次阅读2010-12-26 03:28

我读的总是错,我参考的是圈圈的代码,


void main(){


 CS_CLR;  //CS_N=0;   PG4
 SUSP_CLR; // SUSP=0; PG5
 REST_SET;//RST=1;  PG1
 EOT_SET;//EOT=1; PG0
 DMACK_SET;  //DMACK=1; PG3


                         //USB_DATA_OUT   PC_ODR;


                        //USB_DATA_IN        PC_IDR;
 id=D12ReadID();


 while(1){


   nop();


 }


}


 


 


///////以下D12ReadID()用到的子函数部分////////////////


/*******************************************************************
函数功能:将数据口设置为输入状态
入口参数:
返    回:
备    注:
********************************************************************/
D12SetPortIn(void){ //将数据口设置为输入状态
 C_DDR=0X00;  //输入
 C_CR1=0XFF;  //上拉
 C_CR2=0X00;  //无中断 
}
////////////////////////End of function/////////////////////////////
/********************************************************************
函数功能:将数据口设置为输出状态
入口参数:
返    回:
备    注:
********************************************************************/
D12SetPortOut(void){ //将数据口设置为输出状态
 PC_DDR=0XFF;  //输出
 PC_CR1=0XFF;  //退挽输出
 PC_CR2=0XFF;  //10MHZ 
}
////////////////////////End of function/////////////////////////////
/********************************************************************
函数功能:将数据写到数据线上
入口参数:x_data,需要输出的数据
返    回:
备    注:
********************************************************************/
D12SetData(u8 x_data){
 D12SetPortIn();////将数据口设置为输入状态
 USB_DATA_OUT=x_data; //
}
////////////////////////End of function/////////////////////////////
/******************************************************************
函数功能:D12写命令。
入口参数:Command:一字节命令。
返    回:无。
备    注:无。
********************************************************************/
void D12WriteCommand(u8 Command)
{
 //D12SetCommandAddr();  //设置为命令地址
 USB_A0_SET;
 //D12ClrWr(); //WR置低
 
 USB_WR_CLR;


 D12SetPortOut(); //将数据口设置为输出状态(注意这里为空宏,移植时可能有用)
 D12SetData(Command);  //输出命令到数据口上
 //D12SetWr(); //WR置高
 
 USB_WR_SET;
 D12SetPortIn(); //将数据口设置为输入状态,以备后面输入使用
}
////////////////////////End of function//////////////////////////////



/********************************************************************
函数功能:写一字节D12数据。
入口参数:无。
返    回:写一字节。
备    注:无。
********************************************************************/
u8  D12GetData(void){
 D12SetPortOut;
 return USB_DATA_OUT; 
}
////////////////////////End of function/////////////////////////////


/********************************************************************
函数功能:读一字节D12数据。
入口参数:无。
返    回:读回的一字节。
备    注:无。
********************************************************************/
u8 D12ReadByte(void)
{
 u8 temp;
 //D12SetDataAddr(); //设置为数据地址
 USB_A0_CLR;
 //D12ClrRd(); //RD置低
 
 USB_RD_CLR;


 temp=D12GetData(); //读回数据
 //D12SetRd(); //RD置高
 USB_RD_SET;
 return temp; //返回读到数据
}
////////////////////////End of function/////////////////////////////


/********************************************************************
函数功能:读D12的ID。
入口参数:无。
返    回:D12的ID。
备    注:无。
********************************************************************/
u16 D12ReadID(void)
{
 u16 id;
 D12WriteCommand(Read_ID); //写读ID命令
 id=D12ReadByte(); //读回ID号低字节
 id|=((u16)D12ReadByte())<<8; //读回ID号高字节
 return id;
}
////////////////////////End of function//////////////////////////////

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章