打印

也许是菜鸟问题~急用求高手指点

[复制链接]
1881|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jarvis1547|  楼主 | 2011-10-24 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
也许是菜鸟问题~急用求高手指点A/D转换程序中,模拟数据是如何引入单片机内的?针对的程序如下(芯片为PCF8591),请给位帮忙指点解释,感激不尽!!

字节数据传送函数
函数原型: unsigned char RcvByte();
功能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号),
发完后请用应答函数。
------------------------------------------------------------------*/       
unsigned char RcvByte()
{
unsigned char retc;
unsigned char BitCnt;

retc=0;
SDA=1; //置数据线为输入方式
for(BitCnt=0;BitCnt<8;BitCnt++)
{
_Nop();
SCL=0; //置时钟线为低,准备接收数据位
_Nop();
_Nop(); //时钟低电平周期大于4.7us
_Nop();
_Nop();
_Nop();
SCL=1; //置时钟线为高使数据线上数据有效
_Nop();
_Nop();
retc=retc<<1;
if(SDA==1)retc=retc+1; //读数据位,接收的数据位放入retc中
_Nop();
_Nop();
}
SCL=0;
_Nop();
_Nop();
return(retc);
}
其中的 retc=retc<<1;
if(SDA==1)retc=retc+1;是如何运作的?怎样得出八位数据呢?

相关帖子

沙发
相信哥咯| | 2011-10-25 01:19 | 只看该作者
不能言语

使用特权

评论回复
板凳
jarvis1547|  楼主 | 2011-10-25 09:01 | 只看该作者
2# 相信哥咯 不是吧~那你之前怎么弄懂的?可以指点不?

使用特权

评论回复
地板
weiyg8051| | 2011-10-25 15:25 | 只看该作者
前面移位了,+1= 最低位置位 移8次就是一个字节

使用特权

评论回复
5
meteor_lcj| | 2011-10-25 19:22 | 只看该作者
:shutup:

使用特权

评论回复
6
chunyang| | 2011-10-25 23:16 | 只看该作者
如果AD是外置的,通过IO操作读入MCU,内置ID则是自动的,结果放在MCU片内的指定寄存器中,建议楼主好好看看相关器件手册。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝