80C51单片机能不能让他只执行中断程序?我只希望单片机在外部来一个中断信号的时候执行一段程序

就是说我只希望在我给单片机一个触发信号之后,单片机执行一段相应的程序

对此我有一个疑问,假如这个可以实现,那么由于本身没有主程序,那么一开始单片机会不会认为它已经执行完毕所有命令,之后就停止工作了?那么我来一个信号的时候他还会继续执行中断服务程序么?

应该说,这是一个比较经典的做法。

单片机只在需要处理的时候进行处理,其余的时间,都处于待机状态。
具体的执行过程,一般是主程序在配置完所有的中断后输入待机状态。
你所谓的执行完毕所有命令,停止工作是没有完全了解单片机的运行过程,把PC上的执行完程序的概念混到单片机里了。单片机程序是始终运行的,没有所谓的完成状态。追问

那么单片机所谓待机状态是什么样的呢?执行死循环么?比如“SJMP $”这样?

追答

待机状态,具体到某一个特定的系统有不同的定义。比如windows系统,你看任务管理器里面有个System Idle Process,这是windows的待机任务。

对51系统,简单点,SJMP $,C语言用while(1){;},这种死循环,是可以的。
稍进一步,可以在死循环中加一个计数器,while(1){ SleepCount++; },通过观察计数器的值,可以了解系统的运行状态。
再进一步,在进入循环前配置好中断,进入循环系统则进入低功耗状态,让CPU处于休眠状态,靠外部中断唤醒CPU。对51来说是这样 while(1){ PCON |= 0x01 },或者更进一步,PCON|=0x02; 具体用什么休眠指令,让系统处于哪一级的低功耗,看你的系统情况。

另外提醒一下,程序开发调试的过程中,可以先不执行休眠状态。

追问

非常感谢!!先采纳了。。。我还想问一下,那个所谓休眠模式,是说我配置好中断之后,死循环里加一条MOV PCON,#1H或者MOV PCON,#2H就能让他进入休眠状态,然后靠外部中断来使它终止休眠是么?

追答

对,要配置好中断,并允许中断,全局中断。另外,可以先把中断程序都调试好后,再试着休眠。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-24
当然要有主程序,不然单片机怎么启动,初始化。
等初始化完后加一个死循环,如果没有中断,就一直在这死循环内运行,当有中断后再跳到中断服务程序运行中断服务程序就OK了!
第2个回答  2014-03-24
你在主程序的末尾加一个循环就可以解决你的问题了,这也是推荐的方法。
比如
while(1);
第3个回答  2014-03-24
一般是写一个空的死循环语句就行。

说明80C51单片机的中断过程.
单片机是在每一个机器周期的最后状态(S6),按优先级顺序对中断请求标志进行查询,即先查询高级中断后查询低级中断,同级中断按“外部中断0—定时中断0—外部中断1—定时中断1—串行中断”的顺序查询。如果查询到有标志位为“1”,则表明有中断请求发生,接着就从相邻的下一个机器周期的S6状态开始进行中断响应。 由于中断...

什么是中断?80C51单片机的中断是什么?
简单来说,80C51单片机的中断机制允许单片机在执行主程序的同时,能够及时响应和处理各种外部和内部事件,从而提高系统的实时性和效率。

80C51的中断有哪些?
在80C51单片机中,中断是实现实时处理和多任务操作的重要手段。当单片机正在执行主程序时,如果外部或内部发生某一事件(如定时器溢出、外部信号输入等),单片机可以暂停当前主程序的执行,转而响应这一事件,即执行相应的中断服务程序。这一过程被称为中断响应。80C51单片机有五个中断源,分别是两个外部中...

80c51单片机介绍
51单片机比较简单,优先级只能设置成高和低,中断系统比较强大的话可以给它按照中断的顺序给它排序,想让谁属于高,谁处于次高,在处于次次高,在处于最低,51单片机不具备这么复杂的终端系统,它只能支持简单的高优先级和低优先级,一旦到了中断向量入口地址就能够去执行中断服务函数,执行完中断服务函数...

51单片机有哪些中断级,如何对各中断请求进行控制
(1)80C51单片机具备以下中断级别:外部中断0(\/INT0),外部中断1(\/INT1),定时器0溢出中断,定时器1溢出中断,以及串行通信中断。(2)中断控制通过设置或清除特殊功能寄存器TCON、SCON、IE和IP的相关位来实现。

单片机80c51编程AJMP MAIN?
那么单片机就会将PC值跳转到对应的中断矢量入口。之后就会从入口处跳转到相应的中断服务程序了。例如在你这个例程里面,当定时器0中断事件产生以后,不管你的主程序愿意不愿意,都会直接蹦到000Bh入口,并且执行AJMP INQP,跳转到T0中断的服务程序执行,并且在执行RETI后才会回到被打断的主程序位置。

80C51单片机有几个中断源,分别是什么?
80C51单片机具备五个中断源,具体如下:1. 外部中断0,即INT0。2. 定时\/计数器0,即T0。3. 外部中断1,即INT1。4. 定时\/计数器1,即T1。5. 串行通信口中断,即串口。在80C51单片机中,所有中断源的优先级是可以调整的。为了定义高优先级中断,您需要修改IP寄存器,对应的位分别是:PX0、PT0、...

关于C51单片机单片机的几个问题
4、MOV 20H,@DPTR 这个语句错了是因为DPTR只能用于片外寻址么 --这个指令,并不存在。DPTR只能用于片外寻址么 --查一下指令表,就知道了。5、”80C51单片机子程序调用时能自动保护断点和现场“,这句话错了是不是因为只能自动保护断点不能自动保护现场?--中断时,51 单片机,采用压栈的方法,...

80C51系列单片机学习→中断一节里→计算初值→
TH0和TL0都溢出,都变为00H,定时器就产生一个定时中断 2.256=2^8;因为计数器是+1 计数的,所以先算初值:65536-50000=15536 然后,把15536化为2进制数,按照不同的模式放置初值,例如;方式2的话,所得2进制的高八位直接放TH0,第八位直接放TL0(可能不是方式2,记不太清楚而来,反正其中有...

80C51单片机的控制总线信号有哪些,各信号的作用如何?
程序存储器地址允许输入端\/EA——当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自运转向执行片外程序存储指令。当EA为低电平时,CPU只执行片外程序存储指令。复位信号RST——该信号高电平有效,在输入端保持两个机器周期的高电平后,就可以完成复位操作。P3口(P3.0\/...

相似回答