0

我正在使用带有 Atmega8535 微控制器的 STK200 板。我使用 INT0 和 INT1 按钮作为外部中断,但为了初始化 INT0,我必须将第 6 位设置为 1,而要初始化 INT1,我必须将第 7 位设置为 1,因此没有更多空间来初始化其他按钮。

我的讲师告诉我,可以使用更多按钮来引起中断,但这超出了我正在学习的那一年(第一年软件工程)所需的知识。

没有中断,我不知道如何处理按钮。所以我需要如何处理按钮或如何使用更多按钮作为中断的建议。

4

1 回答 1

0

还有另一种处理按钮的方法(不同于中断),当然中断是最好的,但如果你没有任何外部中断引脚,那么你可以使用它。该方法基本上是关于轮询您连接按钮的引脚。我会把 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 总是比你快:)。注意:中断比这更好,原因很简单:它们不必进行轮询。

希望你能理解。

于 2013-04-06T20:52:07.477 回答