C语言中断正在执行的子程序

C语言中断正在执行的子程序,第1张

程序中用While(一个全局变量){这里执行子程序的 *** 作}

要中断时把这个变量设为0,

则那个子程序就退出了.

这里神氏搜假设你的子程序是个游历重复反复执行的 *** 作.如果不是,那么你的需求本身就是错的做法你需要核悉重新评估你的设计合理性.

中断函数不用进行函数声明,可以写在MAIN函数前面也可以写在MAIN函数后面。

一、中断服务程序,处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。

二、当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去昌森斗处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。

三、实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优耐磨先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。

四、保护被中断进程现场春则。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。

五、分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。恢复被中断进程的现场,CPU继续执行原来被中断的进程。

你是要用哪种语言编写啊?C语言的话,定时器中断子程序不需声明,void INT0ISR() interrupt 0 //一定要写interrupt ,0表示侍毁游对应的中断等级

{ uchar i

CleanScreen()//清屏

SetPos(0x80,0) //

for(i=0i<12i++)

WriteData12864(Dis2[i])//

DealData(ReadByteEEPROM(0x2000))//

SetPos(0x90,0)//

for(i=0i<12i++)

WriteData12864(Dis3[i])

DealData(ReadByteEEPROM(0x2200))//

SetPos(0x98,0)//老销

for(i=0i<14i++)

WriteData12864(Dis8[i]) //

if(Key==0)

{

DelayMs(10)

if(Key==0)

{ while(!Key)

Buzzer(0,1) //

++t

if(t==1)

SetTemp1() //

else

{

t=0

SetTemp2() //余败

}

}

}

CleanScreen() //清屏

Display()

}


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

原文地址: http://outofmemory.cn/yw/12536111.html

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

发表评论

登录后才能评论

评论列表(0条)

保存