yycool 发表于 2008-2-15 00:42:14

关于您书上提到的I/O口设置应先设ddrx,但我看到的一篇文档与此相违

这个寒假初学AVR,看了很多文档,以您的新书作为主要教材,这个论坛真是学AVR的圣地啊,太棒了

您在6.1.2中有一段: 1)正确使用AVR的I/O口要注意:先正确设置DDRx方向寄存器,再进行I/O口的读写操作。

下面是我看到的一篇文档的截图,还有那个文档,里面有些笔记,见笑了
里面说先设置ddrx会不可靠,您能说明一下吗,谢谢
1http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_214255.jpg
点击此处打开ourdev_214256.pdf(文件大小:166K)

bozai 发表于 2008-2-15 00:52:59

俺就替马老师回答吧,马老师的意思应该是操作io口要设置方向寄存器,不然得不到正确结果,输入输出要搞对,有别于传统的51单片机。

先后顺序要看具体应用了,不过我一直都是先设置port后ddr, 怕的就是端口冲突(avr输出对device输出)

kebaojun305 发表于 2008-2-15 10:42:34

对,这个是要看具体的电路。然后才能决定用那种设置。

machao 发表于 2008-2-15 12:50:58

LZ贴的说明没有问题,“注意I/O操作的顺序”,点炸药肯定出问题,但如果是点亮LED就不要紧了。

1、2楼的解释完全正确。

我的书中主要强调在一般情况下,不要忘记I/O口的方向设置,学过51的人经常会忘记设置I/O的方向。在具体使用中,应根据实际情况决定DDR和PORT寄存器配置的先后顺序。

其实,有的时候还需要巧妙的利用AVR的I/O口的特点,如在我书中使用I/O模拟I2C通信的例子中,当DATA线为输出高电平时,并没有将DDR设置为输出方式,而是保持输入上拉有效方式,但DATA线上由于上拉为高电平,相当I/O“输出”1,省掉了I/O口工作方式的频繁转换。

一旦你真正理解透了,就会正确和灵活的配置和使用I/O口了。
页: [1]
查看完整版本: 关于您书上提到的I/O口设置应先设ddrx,但我看到的一篇文档与此相违