程序集-使用2个以上的中断按钮



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

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

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

还有另一种处理按钮的方法(不同于中断),当然中断是最好的,但是如果您没有任何外部中断引脚,那么您可以使用这种方法。该方法基本上是关于轮询的引脚,你已经连接的按钮。我将在asm中发布8051的代码实现,以便您更好地理解它。希望能有所帮助:

;假设您已将按钮连接到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被打开,那么微处理器将执行你想要做的事情很多次,只有一次按下btn。原因很简单:mP的频率(可能是12MHz)比你手指按按钮的频率快得多,或者,换句话说:你可以尽可能快地按按钮,但mP总是比你快:)。注意:中断比这更好,原因很简单:它们不需要进行轮询。

希望你能理解

最新更新