中断服务程序,处理器处理“急件”,可理解为是一种服运握逗务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为—中断服务程序.
中断处理过程:
(1)保护被中断进程皮滑现场.为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值.
(2)分析中断原因,转去执行相应的中断处理程序.在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求.
(3)恢复被中断进程的现场,CPU继续执行原来被中断的进程.
INT后面是中断处理程序,相当于一个双层循环,r7相当于内层循环变量,r6相当于外层循环变量.
首先,r7减一后若不为零就跳转到finish处退出中断,若为零则说旁卖明已经完成一个200次的内循环,则将r7恢复成200再看r6,若减一不为零就跳回here处继续一轮内循环,若为零则说明已经完成一个50次的外循环,即已经中断了10000次,则恢复r6为50,迎接下一个10000次中断,并对p1.0状态取反.
这里,暂停和停止就没有太大区别了。显示系统事件的时候,肯巧孙定要做一个循环,在循环体后面加上判断按键的指令序列,定义按下某键为暂停、某键为停止,分支执行,便可实现。首先,用
Input:
mov ah,1
int 16h
jnz 显示时间标号
cmp al,'P' 暂停
jz Input
cmp al,'D'
jz 显示时间标号
判断有无按键,若没有按逗宽州键,转去继续显示时间;若有按键,则判断是什么键,视情况山蔽分别处理。
可以用外部中断来控制;如果单片机中断是低有效,将按钮设置成按下时为低电平,触发中断,在中断中设置一个标志位,然后退出中断;
主程序来判断这个标志位,如果为1,则退出led跑灯程序;
如果为0,则继续跑灯。
如果芦铅历单片机中断是高有效,将按钮设置成按下时为高电陪搜平,同理激祥。
设置一个全局变量a,并且赋值a=0,
一旦有按钮按下,则进入中断,并且a赋值为1,即a=1;
在主程序中判断a的值,如果为0,则执行跑灯;若为1,则停止。
请参考
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)