单片机的一个IO口怎样才能实现发出数据的同时还能在同一个IO口读取外部器件的反馈信息

就好像18B20那样在一个IO口同时能输入输出数据请教高手解答谢谢!!... 就好像18B20那样 在一个IO口同时能输入输出数据 请教高手解答 谢谢!! 展开
 我来答
ouyanglingjun
2011-11-22 · 超过12用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:24.6万
展开全部
首先要做一个最小单位的延时,最好应定时器做,比如10ms,然后如果要发送数据就把端口设置为输出状态,如要发送“1”就把端口拉高,等待10MS延时,发送“0”就把端口拉低,等待10MS延时,发送数据的时候最好搞一个头码,即:起始位比如1010,在搞个结束位,中间就是数据位。至于反馈信息你可以在发送完成之后做一个延时等待接收机就收完成,再把端口置为输入,你就可以用个if语句判定是否正确的收到反馈信息
zyj1739
2011-11-22 · TA获得超过140个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:191万
展开全部
这个是自己写的协议,一线传输,只要用相同的时序就可以了,平常都处在接收状态,你可以自己设个时序表,这可以在两个MCU之间一线传输进行调试,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x120765121
2011-11-22 · TA获得超过701个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:45.2万
展开全部
首先搞清楚,18B20虽然是单线通讯,但是不是同时输入和输出数据,输入和输出是分别操作的,首先是输出时序与18B20通讯,18B20可能会应答,但是肯定不会是在你输出的时候应答,所以你要清楚18B20的具体时间,比如:输出高点平多久,然后多久后他会回应数据,这个时候你就准备接收,等等操作。18B20只是单线复用,但不是同时输入输出,相当于分时复用,在不同的时间输出或者输入,还没有那个芯片可以实现单线同时输出又输入的。祝你进步
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hemohoo
2011-11-22 · TA获得超过227个赞
知道答主
回答量:75
采纳率:0%
帮助的人:65.6万
展开全部
设定IO口的方向寄存器;看你用的是什么单片机了;我用的是AVR,
BOOL iniT_DS18B20(VOID)
{
DS18B20_DDROUT();\\设定io输出寄存器为输出
DS18B20_POWERon();\\打开电源引脚给DS18B20供电
DS18B20_DATA_HI();\\输出数据线为1
DS18B20_DATA_LOW();\\输出数据线为0,同步信号
Delay_us(480);
DS18B20_DATA_HI();\\数据线为1
DS18B20_DDRIN();\\设定io输出寄存器为输入
Delay_us(80);
if(DS18B20PIN&(1<<DS18B20_DATA))检测确认信号
{
DS18B20_POWERoff();//关闭电源
return false;//返回错误
}
Delay_us(500);
return true;
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lvnvl
2011-11-22 · TA获得超过265个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:182万
展开全部
输出端口高电平,接收端低电平。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式