单片机控制DS12C887

[复制链接]
1517|13
 楼主| juventus9554 发表于 2013-9-8 13:19 | 显示全部楼层 |阅读模式

在读DS12C887时,如果没有把总线在相关时刻全部置高一下,则读到的时钟就无法走动,全死的(总线连的是P0口)
chuxh 发表于 2013-9-8 13:20 | 显示全部楼层
程序看看
 楼主| juventus9554 发表于 2013-9-8 13:21 | 显示全部楼层
uchar read_ds(uchar ds_add)//读DS12C887
{
uchar ds_date;
ds_as=1;
ds_ds=1;
ds_rw=1;
ds_cs=0;
P0=ds_add;
ds_as=0;
ds_ds=0;
P0=0xff;     我的第一个问题就是这条语句为什么不能省?
ds_date=P0;
ds_ds=1;
ds_as=1;
ds_cs=1;
return ds_date;
}
chuxh 发表于 2013-9-8 13:22 | 显示全部楼层
你是I/O模式读取,当然要先对其输出全1了。
总线方式就不用(自动产生时序)
 楼主| juventus9554 发表于 2013-9-8 13:23 | 显示全部楼层
能不能说清楚一点?啥是I/O模式啥是总线方式?
 楼主| juventus9554 发表于 2013-9-8 13:23 | 显示全部楼层
不对I/O模式输出全1会怎么样?
llljh 发表于 2013-9-8 13:24 | 显示全部楼层
去看51的端口输入前需要做啥。
dingy 发表于 2013-9-8 13:25 | 显示全部楼层
这个是51的基础啊。
pengf 发表于 2013-9-8 13:26 | 显示全部楼层
说51单片机是“准双向口”,意思就在这里。
 楼主| juventus9554 发表于 2013-9-8 13:27 | 显示全部楼层
醍醐灌顶啊
可是P0口是真正的双向口,为什么也要这么干?
renyaq 发表于 2013-9-8 13:28 | 显示全部楼层
P0口在作为普通I/O口使用时是准双向口,在作为总线使用时才是。
 楼主| juventus9554 发表于 2013-9-8 13:28 | 显示全部楼层
嗯,懂了,多谢大侠
haitun1895 发表于 2013-9-8 15:20 | 显示全部楼层
剡溪渡口 发表于 2013-10-28 10:53 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

900

主题

12190

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部