❶ 怎样51单片机调用两个子程序
MOV R0,#08H
MOV A,#0FEH
LOOP: MOV P1,A
LCALL DEL
RR A
DJNZ R0,LOOP
使用DJNZ 指令。为0执行下一指令,不为0跳转。
就可以调用两个子程序了
❷ 大侠们,51单片机如何利用有限的外部中断控制多个子程序谢谢啦
单片机外部中断有限,仅有两个,在某些系统设计中可能会不够用。这里给大家推荐一个比较简单的扩展外部中断的方法。灵感来至于单片机键盘设计!
在有些键盘设计中,如果在程序中采用轮询的方法在检测按键,会花费大量的cpu资源,特别是还要进行大量的数据处理的情况下。所以很多按键设计都加入了中断,上一篇博文里的按键设计其实都可以加入中断,这样可以更好的利用cpu资源。
一般在按键设计中只会用一个中断,但是却可以控制n多的按键。每一个按键的按下都相当于产生了一个中断,所以利用这个原理,我们也可以‘无限’的扩展外部中断。一个简单的电路图如下:
这样当外部送来一个低电平的信号时,通过与非门后将产生一个中断信号,这个信号可以送到单片机的外部中断1,然后检测p00到p03的电平状态,就可以判别是根线上产生了外部中断,从而运行相应的中断服务子程序。
这个电路原理可以结合前面的按键来进行进一步的发挥(每个按键信号可以当做一个中断信号),那样可以产生跟多的中断信号。
❸ 51单片机怎么把多个子程序做成头文件,然后调用
你可以写一个头文件,比如说<delay.h>之类的,开始写51程序的时候,#include <delay.h>就可以放进去了,这条语句相当于展开这个文件。你可以把它放在任意的路径,最好是和<reg51.h>一个文件夹,方便直接用,就不用每次使用都要查找它的路径了。希望能够帮到你
❹ 51单片机如何调用两个不同的中断子程序
当然不可行了,中断服务程序是不能调用的,只能靠硬件触发。
你可以初始化时只开启第一个中断,在第一个中断服务程序里,开启第二个中断,这样还是可以的。
❺ 51单片机如何在主程序循环的时候通过按键进入中断子程序
只要在P3.2和P3.3脚外部有按键,而且按下是接地,那按下键就会引起外部中断0和外部中断1申请中断。在主程序初始化时,设置外部中断为下降沿触发,并开中断就行。