gpt4 book ai didi

c - 嵌入式c和8051微 Controller

转载 作者:太空狗 更新时间:2023-10-29 15:08:11 25 4
gpt4 key购买 nike

8051 微 Controller 复位后,所有端口引脚锁存器的值都设置为“1”。现在我正在阅读这本书“嵌入式 C”,它指出以下代码的问题在于它可以使开发人员陷入一种错误的安全感中:

// Assume nothing written to port since reset
// – DANGEROUS!!!
Port_data = P1;

如果以后有人修改程序以包含写入同一端口的全部或部分的例程,则此代码通常不会按要求工作:

unsigned char Port_data;
P1 = 0x00;
. . .
// Assumes nothing written to port since reset
// – WON’T WORK BECAUSE SOMETHING WAS WRITTEN TO PORT ON RESET
Port_data = P1;

任何了解嵌入式 c 的人都可以向我解释为什么这段代码不起作用?它所做的只是将 0 分配给一个 char 变量。

最佳答案

潜在问题。

1) 与端口关联的数据方向寄存器 (DDR) 可能未按预期设置,因此在上电时,DDR 可能设置为“输入”。所以写端口0可能意外读不到读0。

2) 与端口关联的数据方向寄存器可能已设置为“输出”,“读取”数据可能没有明确的含义。根据体系结构,可能需要幻像位来屏蔽输出位以进行回读。

3) 可以通过复位命令输入上电代码,该命令不过是跳转到“复位 vector ”。因此,与“冷”加电相关的任何硬件特定操作都不会发生,因为这是“热”加电。

解决方法:

在启动代码时,显式设置 DDR 和输出值(以及需要的影子位)。

可能不适用于 8051 - 一般指的是嵌入式处理器。

关于c - 嵌入式c和8051微 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20694851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com