-
首先,我不明白你的中断请求是什么,听你的描述应该是外部中断使LED亮起,数码管停止(是不亮还是停止计数)。 我们先说电路,LED不能接P32,需要接其他空闲的IO口(如P20,要加一个串联限流电阻,使电流一般为4mA,1K或LED的另一端可以接高电平,P32口要接一端一个按钮, 钥匙的另一端接地,可以加一个上拉电阻,也可以不加。 这样,当按下按键时,会产生一个下降沿来触发外部中断(触发模式在程序中设置为由下降沿触发),然后进入中断处理程序。
软件是使数码管的段选择在主循环有效,数码管光亮; 让 LED 熄灭(P20 为低电平)。 在中断处理功能中,数码管的段选择无效,数码管熄灭; 让 LED 亮起。 这是按照你的程序思维,但结果应该和你之前的情况一样,因为中断处理时间很短,你看不到LED灯然后进入主循环,所以你总会觉得数码管亮了,LED不亮,这是你设计的初衷, 是否应该再次打断数码管灯,然后再打断LED灯?
-
首先,您必须打开 Total Break EA
其次,打开五个小中断:et0、et1、es、int0、int1,一旦与中断对应的接口收到重要电平,它就会启动。
设置这些优先级。
-
MCS-51 微控制器有 5 个中断源,分别是:
-
这五个中断都有指定的io端口,一般51个单片机分别是int0,int1,t0,t1,int0和int1是外部中断,t0和t1是定时器,es是串口中断允许位,et1是定时器1中断允许位,ex1是外部中断允许位,et0和ex0类似。
要生成中断,必须首先配置并启用中断线。 根据需要设置两个触发寄存器进行边沿检测,同时将 1 写入中断屏蔽寄存器的相应位以允许中断请求。
当预期边沿出现在外部中断线上时,将生成中断请求,并将相应的挂起位置于 L 中。 在挂起寄存器的相应位中写入 1 将清除中断请求。
如果需要生成事件,必须先配置并启用事件行。 所需的边沿检测允许通过设置两个触发寄存器,同时将 1 写入事件屏蔽寄存器的相应位来请求事件。
当事件线上出现所需边沿时,将生成事件请求脉冲,并且相应的挂起位未设置为 1。 也可以通过在软件中断事件寄存器中写入 1 来通过软件生成中断事件请求。
-
呵呵,不知道你用的是哪个教程。 但是本教程的这种说法是不恰当的。 标准 MCS-51 微控制器只有两个外部中断,即 INT0 和 INT1,而不是五个。
你问题中所谓的“五个外部中断”是CPU中断的来源,但也有内部中断和外部中断。 因此,这五种中断中,只有 int0 和 int1 是外部中断,而 et0(定时器 0 中断)、et1(定时器 1 中断)和 es(串口中断)都是内部中断。
首先,您必须打开 Total Break EA
其次,打开五个小中断:et0、et1、es、int0、int1,一旦与中断对应的接口收到重要电平,它就会启动。 >>>More
这并不难,我就是这样学会的。 只要找到正确的路,还是可以避免那么多弯路的,我上学的时候走了很多弯路,靠自己一步一步想出来。您可以添加我了解详细信息,我会帮助您!
51个绝对不够! 学ARM没关系,买开发板学,学ARM学操作系统也没关系! Arm 和操作系统可以这样比较: >>>More