quben 发表于 2005-8-6 16:33:57

请教马老师: 关于PINx的只读寄存器, 却可以通过程序设置值的问题

PINx可以在程序中设置值吗?



1. 我在<<高档8位单片机ATmega128原理与开发应用指南>>的P58页讲:

"PINx是只读寄存器"



2. 但在试验中, 我发现可以通过以下代码可以很容易的设置PINx的值,如:



    DDRA = 0xFF;

    PORTA = 0xF0;

    DDRA = 0x0;//执行完这句后, PINA的值就是PORTA的值0xF0



3. 附:

(由于在使用I/O口模拟数据线写入和读取外部的rtl8019的同一段RAM数据(0x4000-0x4002)时, 结果读出的所有字节的值都是写入的最后一位, 因此猜想是PINx把我最后的一位保存了下来, 再加上实际读取外部RAM的值无果, 所以每次取的值可能一直是PINx引脚上保留的值)



请马老师指点, 谢谢!




-----此内容被quben于2005-08-06,16:53:54编辑过

HJJourAVR 发表于 2005-8-6 17:08:22

1和2 并无冲突。

athle 发表于 2005-8-27 18:27:48

当你想给某个引脚取反,试着用不赋值portx的值,而这样赋值sbi pinx

然后循环看一下各自的值.



大部分mega芯片都行!蛮好玩的
页: [1]
查看完整版本: 请教马老师: 关于PINx的只读寄存器, 却可以通过程序设置值的问题