装配 - 使用2个以上的按钮进行中断?

时间:2013-04-06 09:11:04

标签: assembly microcontroller interrupt atmega

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

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

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

1 个答案:

答案 0 :(得分:0)

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

希望你明白。