什么是C语言的中断程序 有什么用啊

什么是C语言的中断程序 有什么用啊,第1张

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

当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。

假设你的外部晶振为12M(时钟频率为1M),用复合定时法,即把小值定时叠起来void t0() interrupt 1{中断服务程序;}主函数:TMOD=0x01 //设置为定时器0工作方式1for(t=20t>0t--){ TH0=(65536-50000)/256 TL0=(65536-50000)%256//赋初值使一次定时为50ms TR0=1 //开定时器t0 while(!TF0) //等待置位 TR0=0 //关定时 TF0=0 //清标志位}TF0=1 //亲自置位TF0,是打开中断前提IE=0x82 //开允许位EA,ET0若想精确一些,由于中断置位的 *** 作会花3~8个时钟周期;所以可把初值增大3~8,即TH0=(65536-49997)/256TL0=(65536-49997)%256还可用编译软件调试(先设置外部晶振值为12M)测量延时时间

方法类似,补写程序如下:

#include

#define

uint

unsigned

int

#define

uchar

unsigned

char

sbit

led=p0^0

sbit

led1=p0^1

void

delay1ms

(uint

z)

{

uint

x,y

for

(x=zx>0x--)

for

(y=110y>0y--)

}

void

exter()

interrupt

2

{

delay1ms(600)

led=0

delay1ms(200)

led=1

}

void

exter0()

interrupt

0

{

delay1ms(600)

led1=1

delay1ms(200)

led1=0

}

main()

{

ea=1

//开总中断

ex1=1

//开外部中断1

ex0=1

//开外部中断0

it1=0

//外部中断边沿触发,下降沿触发

it0=0

//外部中断0边沿触发,下降沿触发

}


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

原文地址:https://54852.com/yw/11009773.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存