打印
[51单片机]

IO口咨询

[复制链接]
1990|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhu070|  楼主 | 2013-8-1 19:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
NE5532| | 2013-8-1 20:26 | 只看该作者
当然有啊,第一个对P1口只操作一次,第二个是一直在操作。

使用特权

评论回复
板凳
zhu070|  楼主 | 2013-8-1 20:29 | 只看该作者
NE5532 发表于 2013-8-1 20:26
当然有啊,第一个对P1口只操作一次,第二个是一直在操作。

嗯,这两种操作对单片机有什么影响吗?比如功耗,IO口电平的稳定性。

使用特权

评论回复
地板
NE5532| | 2013-8-1 20:37 | 只看该作者
对端口输出有影响一个是只操作一次,一个是一直操作。功耗的影响上微乎其微,你还是搞清楚自己想干什么,按照你想干的事情写好了,没有方案的优劣讨论可以离开需求的。

使用特权

评论回复
5
568581185| | 2013-8-2 10:09 | 只看该作者
main()
{  P1^1 = 1;//只对P1.1进行一次操作
    while(1);//程序停止在此处
  }

main()
{  while(1)
    { P1^1 = 1;}//死循环内执行P1.1的操作,是一直执行。
  }

使用特权

评论回复
6
minDragon| | 2013-8-2 11:59 | 只看该作者
大家都说的很对也很清楚了~不知道楼主想搞懂什么~要做些什么~

使用特权

评论回复
7
joyme| | 2013-8-2 16:55 | 只看该作者
从可靠性上分析,一直操作的可能要好点,如果这个口受外界影响,下面那种代码可以自动恢复

使用特权

评论回复
8
zhu070|  楼主 | 2013-8-3 08:52 | 只看该作者
我现在是通过按键中断,在中断程序中,将P1^1口置高电平。我在想,是每次进入中断后都执行P1^1 = 1,还是判断P1^1是否是高电平,不是再执行P1^1 = 1。

使用特权

评论回复
9
NE5532| | 2013-8-4 07:54 | 只看该作者
zhu070 发表于 2013-8-3 08:52
我现在是通过按键中断,在中断程序中,将P1^1口置高电平。我在想,是每次进入中断后都执行P1^1 = 1,还是判 ...

你不是黄金圣斗士,不可能以光速按键,所以按键是一个频率很低的事情,所以你可以每次都置。如果考虑到51是准双向口,如果编译器采用了读修改写整个端口的方式,可能造成有的脚被意外修改,你可以落实一下汇编的端口位操作是否只针对单个口,是的话,就用在线汇编来写,不是的话,在RAM里用一个变量保存端口状态,先在RAM里修改了,再送出端口。

反复操作要看是哪种单片机,51这种端口,越操作越危险,近代的其他单片机都有锁存器,有的还有回读的Latch寄存器,就不存在这个风险。所以没有什么方案是最优的,只有自己搞懂才行。

另外,说外部干扰要强到影响片内寄存器的程度,估计旁边的人都已经挂了,搞开发不能想当然。

使用特权

评论回复
10
zhu070|  楼主 | 2013-8-5 08:20 | 只看该作者
NE5532 发表于 2013-8-4 07:54
你不是黄金圣斗士,不可能以光速按键,所以按键是一个频率很低的事情,所以你可以每次都置。如果考虑到51 ...

谢谢啊

使用特权

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

本版积分规则

4

主题

15

帖子

0

粉丝