简述单片机中断相应过程

简述单片机中断相应过程,第1张

首先开中断,包括各个中断源和总中断,并设置中断触发条件,如定时器初值, 低电平触发还是下降沿触发,然后运行主程序,中断条件具备时,转入中断程序,中断程序完成后,返回主程序,至于保护重要的寄存器内容,属于中断程序之中的内容,包括有些共用中断判断到底属于哪 一个中断和清除中断标志,都是中断程序的内容,有的必须有,有的就没有。

假设晶振频率是12MHz;

P2口输出低电平时LED发光。

下列两个程序,经过了PROTEUS仿真,能够满足要求。

;===================================================

;下面是查询方式

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN:

MOV TMOD, #01 ;令T0定时方式1

MOV TH0, #3CH

MOV TL0, #0B0H ;50ms@12MHz

SETB TR0 ;启动T0

;--------------------------------------------

MOV R7, #20

MOV A, #7FH

MOV P2, A

M_LOOP:

JNB TF0, M_LOOP ;T0没有溢出,就在此循环不止

CLR TF0

MOV TL0, #0B0H

MOV TH0, #3CH

DJNZ R7, M_LOOP ;溢出20次

MOV R7, #20 ;才到1s

RR A

MOV P2, A

SJMP M_LOOP

;--------------------------------------------

END

;===================================================

;下面是中断方式

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0_INT

ORG 0050H

MAIN:

MOV TMOD, #01 ;令T0定时方式1

MOV TH0, #3CH

MOV TL0, #0B0H ;50ms@12MHz

SETB TR0 ;启动T0

MOV IE, #82H ;允许中断

;--------------------------------------------

MOV R7, #20

MOV A, #7FH

MOV P2, A

M_LOOP:

;主程序, 空循环

SJMP M_LOOP

;--------------------------------------------

T0_INT: ;50ms执行一次

MOV TL0, #0B0H

MOV TH0, #3CH

DJNZ R7, T0_END ;中断20次

MOV R7, #20 ;才到1s

RR A

MOV P2, A

T0_END:

RETI

;--------------------------------------------

END

;===================================================

中断源初始化和中断源程序是两个不同的概念。

中断源初始化是指在系统启动时,对中断控制器和各个设备的中断源进行初始化,包括设置中断源的优先级、中断处理程序的入口地址等。中断源初始化的目的是为了让系统在发生中断时,能够正确地调用相应的中断处理程序,保证系统的正常运行。

中断源程序是指中断处理程序,也就是中断响应程序,当系统发生中断时,中断控制器会通过中断向量表找到相应的中断源程序,并跳转到程序入口地址开始执行。中断源程序的功能是处理中断事件,包括保存CPU现场、处理中断请求、恢复CPU现场等 *** 作,最终返回到中断发生前的执行位置,继续执行系统的正常流程。

因此,中断源初始化和中断源程序是两个不同的概念,中断源初始化是为了确保中断源程序能够正确运行,而中断源程序则是处理中断事件的具体实现。

例如定时器0中断:

void timer0_sev (void) interrupt 1

timer0_sev是中断程序名称,可自己定

interrupt 1指的是中断号,不能随意写

0 1 2 3 4 分别是外部中断0 定时器0 外部中断1 定时器1 串口中断。

有的还在中断序号后面写 using 0 using 1等,指的是用哪一个寄存器组,防止内存冲突,应该没什么用途

我编程写两个中断程序,专门注明 using 1 using 2 用不同的分组

可查反汇编代码,根本没有修改PSW寄存器的语句

两个中断都是 PUSH ACC PUSH PSW

中断结束前 POP ACC POP PSW

以上就是关于简述单片机中断相应过程全部的内容,包括:简述单片机中断相应过程、proteus跑马灯定时器中断和查询源程序、中断源初始化和中断源程序有什么不同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10206593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存