打印

ds1302读引脚时为什么可以不对I/O口写1

[复制链接]
2513|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
soch|  楼主 | 2010-4-4 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uchar uc_RTOutputByte(void)
{
uchar i;
for(i=8; i>0; i--)
{
ACC = ACC >>1;
//T_IO=1;//这里为什么不加这条语句呢?不是读引脚 吗?
ACC7 = T_IO;
T_CLK = 1;
T_CLK = 0;
}
return(ACC);
}

相关帖子

沙发
NE5532| | 2010-4-4 21:53 | 只看该作者
T_IO有被设置为输出的时候么?
下次提问的时候注意把环境说清楚,不是任何人都能猜到你用的51的!!

使用特权

评论回复
板凳
soch|  楼主 | 2010-4-4 21:57 | 只看该作者
sbit T_CLK = P2^7; /*实时时钟时钟线引脚 */
sbit T_IO = P1^4; /*实时时钟数据线引脚 */
sbit T_RST = P1^5; /*实时时钟复位线引脚 */
不好意思,小弟初学,ds1302在下降沿输出数据,按我的本意思我是这么写的
for(i=8;i>0;i--)
{
   T_CLK = 1;
   T_CLK = 0;
   T_IO=1;
   ACC7 = T_IO;
    ACC = ACC >>1;

}
结果不行,而上面那个可以。

使用特权

评论回复
地板
soch|  楼主 | 2010-4-4 22:09 | 只看该作者
怎么没有人回答啊?

使用特权

评论回复
5
NE5532| | 2010-4-5 08:53 | 只看该作者
T_IO=1;

for(i=7;i>0;i--)
{
   T_CLK = 1;
   T_CLK = 0;
   ACC7 = T_IO;
   ACC = ACC >>1;
}

T_CLK = 1;
T_CLK = 0;
ACC7 = T_IO;

51单片机,端口输出“1”是因为开漏输出,为了释放引脚以便读入,你的for循环整个都是读入过程,所以在外面做一次就够了。你的移位也有问题,读入的最后一个位被你移到Acc.6上去了。

使用特权

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

本版积分规则

0

主题

41

帖子

1

粉丝