找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

时序的书写理解

查看数: 2925 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-12-20 12:06

正文摘要:

void I2cStart() {         SDA=1;                 (第一行)               & ...

回复

ID:223571 发表于 2017-12-25 09:20
安心1x2 发表于 2017-12-20 21:02
如果单片机指令速度很快可以忽略不计(至少相比你的delay延时而言)。那么两个相邻操作可以认为是同时的, ...

” 那么两个相邻操作可以认为是同时的,实际上确实有执行的先后,为了避免误动作,顺序还是要的。“
SCK = 0;                           //时钟置0                           
  _nop_();                                 //一个机器周期
indata |= IN_Data;       
SCK = 1;


//按照你的意思,我可以将上面的时钟上升沿触发的语句改为如下也没有问题?
SCK = 0;                           //时钟置0                           
  _nop_();                                 //一个机器周期
SCK = 1;
indata |= IN_Data;       

你说到了我的点子上,关键是这个顺序该如何把握?谢谢,回答。
ID:223571 发表于 2017-12-25 09:07
yzwzfyz 发表于 2017-12-20 20:49
估计未来你能将计算机速度做到世界最快,因为你能将两条命令执行的间隔时间做到0.

我的意思是时钟语句和程序的执行语句的执行顺序是怎么样的?
像74hc165实验,数据上升沿触发才从165出来,那么执行语句位置有几种书写方式呢?是夹在时钟语句里面,还是时钟后面?最终我的想法是让单片机识别到我是一个上升沿来了,然后移出一位数据,恳请指正。
ID:111634 发表于 2017-12-20 22:26
楼主理解错了!在时钟线SCL高电平期间,数据线SDA出现下降沿,启动I2C总线传送数据。在时钟线SCL高电平期间,数据线SDA的电平不能变化,否则,将被认为是一个起始信号S或终止信号P,引起出错。因此,若需改变数据线SDA的电平,必须先拉低时钟线SCL电平。
ID:258226 发表于 2017-12-20 21:02
如果单片机指令速度很快可以忽略不计(至少相比你的delay延时而言)。那么两个相邻操作可以认为是同时的,实际上确实有执行的先后,为了避免误动作,顺序还是要的。mcu的内核就是个顺序执行指令的东西,而且要往绝对了哪怕FPGA算上内部走线时延也不是并行了。
ID:123289 发表于 2017-12-20 20:49
估计未来你能将计算机速度做到世界最快,因为你能将两条命令执行的间隔时间做到0.

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表