请问51系列单片机有没有软件中断?
发布网友
发布时间:2024-10-23 20:57
我来回答
共2个回答
热心网友
时间:2024-11-01 03:00
通常51系列单片机里没有软件中断。
深入理解中断,则应该至少明白一点:单片机的大致工作流程,通常是用外部晶振产生“时钟信号”,再由片内分频或者倍频电路去产生“时钟周期”,单片机的各个工作单元挂接在三类总线上(数据总线,地址总线,控制总线),在统一的时钟周期下,步调一致地,从接口读入数据,从代码区读取指令,写入数据区(这几个步骤,对应在电路里,是不同的功能区域,所以可以同时进行,也就是现代CPU才拥有的流水线。但51单片机没这么diao,通常一个一个顺序进行),周而复始。
那么中断是怎么来的呢?51单片机内至少有2个计数器(也叫定时器,本质上是一坨集成硬件电路),16位的(从0x0000到0xFFFF),计数范围最大65536个数,总线上的电路每振荡一次,也就是时钟周期过了一次,则这个计数器的值就+1,当它走到0xFFFF的一刻,就即将溢出,下一个时钟周期来临,则会输出一个信号给到CPU的某个具有极高优先级别的寄存器,让CPU停下当前的工作,并保存当前工作(比如:保存指令指针的地址,堆栈指针,程序状态字),这就是中断。
为什么说51只有硬件中断,没有软件中断呢?
一句话,因为通常51上没有跑操作系统,没有跑操作系统,没有跑操作系统!!!通过操作系统发出中断,和我们操作计数器(定时器)有什么不同呢?前者不仅可以发出中断,还可以进行收回、挂起等调度,正是这个特性,使得某个中断任务的代码,即便是个死循环,也不至于强占CPU资源,而无法进行其他任务。这是软中断。
而我们直接操作计数器,是没法自行终止的,除非计数器指向的那段代码执行完毕,并释放CPU资源。这是硬中断。
更深一步理解是:由操作系统调度的中断,就是软中断。没有越过操作系统(或是根本没有操作系统)调度的中断,就是硬中断。
热心网友
时间:2024-11-01 02:59
51里面的定时中断不就是软件中断了。