我正在使用带有 Atmega8535 微控制器的 STK200 板。我使用 INT0 和 INT1 按钮作为外部中断,但为了初始化 INT0,我必须将第 6 位设置为 1,而要初始化 INT1,我必须将第 7 位设置为 1,因此没有更多空间来初始化其他按钮。
我的讲师告诉我,可以使用更多按钮来引起中断,但这超出了我正在学习的那一年(第一年软件工程)所需的知识。
没有中断,我不知道如何处理按钮。所以我需要如何处理按钮或如何使用更多按钮作为中断的建议。
我正在使用带有 Atmega8535 微控制器的 STK200 板。我使用 INT0 和 INT1 按钮作为外部中断,但为了初始化 INT0,我必须将第 6 位设置为 1,而要初始化 INT1,我必须将第 7 位设置为 1,因此没有更多空间来初始化其他按钮。
我的讲师告诉我,可以使用更多按钮来引起中断,但这超出了我正在学习的那一年(第一年软件工程)所需的知识。
没有中断,我不知道如何处理按钮。所以我需要如何处理按钮或如何使用更多按钮作为中断的建议。
还有另一种处理按钮的方法(不同于中断),当然中断是最好的,但如果你没有任何外部中断引脚,那么你可以使用它。该方法基本上是关于轮询您连接按钮的引脚。我会把 8051 的 asm 中的代码实现发给你,让你更好地理解它。希望能帮助到你:
;假设您已将按钮连接到 P1.1
org 00H
jb P1.1,$ ;wait for a hold button
jnb P1.1,$ ;wait for button to be unhold
;perform anything
end
正如您在代码的第二行中看到的那样,我检查按钮是否被按下(当然假设按钮处于低电平状态),如果没有,那么我就呆在那里,如果它被按下,那么我跳到第 3 行,在那里我等到按钮未按住。如果你不等到 btn 被释放,那么微处理器将执行你想做很多次的 ehat,只需按一下 btn。原因很简单:mP 的频率(可能是 12MHz)要快得多比你手指按下按钮的频率,或者,换句话说:你可以尽可能快地按下按钮,但 mP 总是比你快:)。注意:中断比这更好,原因很简单:它们不必进行轮询。
希望你能理解。