USB论坛-百合电子工作室USB专题站

 找回密码
 我要注册
搜索
热搜: USB学习板
查看: 4604|回复: 1
打印 上一主题 下一主题

程序理解

[复制链接]

6

主题

0

好友

1159

积分

管理员

Rank: 9Rank: 9Rank: 9

楼主
发表于 2014-6-19 16:22:55 |显示全部楼层
A0不能接地哦,向D12写的数据有可能是命令,有可能是数据,所以A0不能接地的
回复

使用道具 举报

6

主题

0

好友

1159

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2014-7-8 13:34:48 |显示全部楼层
pwench 发表于 2014-6-20 10:02
您好!我还是有点不理解,*((unsigned char xdata *)D12_COMMAND)=value这个函数的作用跟您的那个效果应该 ...

A0是必须要控制的,你仔细看D12的数据手册就会明白。另外,本站上给出的USB开源项目里的代码也可以看出是控制了A0的,向D12写入数据或命令的实现代码如下:
[code=cpp]/************************************************************
** 函数名称: outportb()
** 功能描述: 向D12写入数据或命令
** 输   入: INT16U Addr:  命令地址或数据地址
** INT8U Data:    命令或数据
** 输   出: 无
************************************************************/
void outportb(INT16U Addr, INT8U Data)
{
  if(Addr == D12_COMMAND)  //命令
  {
    bD12_A0    = 1;
  }
  else if(Addr == D12_DATA)  //数据
  {
    bD12_A0    = 0;
  }
  else
  {
  }
  ucD12_DataPort  = Data;
  bD12_WR    = 0;
   bD12_WR    = 1;  
}[/code]

你再看看此开源项目的电路图,D12的A0脚是和单片机IO相连的,并没有接地!
回复

使用道具 举报

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

USB开发网 (渝ICP备09006681号-4)

GMT+8, 2024-5-7 22:36 , Processed in 0.037556 second(s), 18 queries .

百合电子工作室版权所有
回顶部