3972|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm8s +pdiusbd12 无法读ID,请指教 [复制链接]

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

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){ //将数据口设置为输入状态
PC_DDR=0X00;  //输入
PC_CR1=0XFF;  //上拉

PC_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//////////////////////////////

此帖出自stm32/stm8论坛

最新回复

你是用AVR还是51弄的,我也正在研究d12呢,我用avr编呢。咱俩可以交流一下啊 我的QQ是187051392  详情 回复 发表于 2010-12-26 09:53
点赞 关注
 

回复
举报

2734

帖子

0

TA的资源

裸片初长成(初级)

沙发
 

你是用AVR还是51弄的,我也正在研究d12呢,我用avr编呢。咱俩可以交流一下啊

我的QQ是187051392

此帖出自stm32/stm8论坛
 
个人签名我爱电子!
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表