请问C51的外部中断程序怎么编写?

请问C51的外部中断程序怎么编写?,第1张

用t0计时,要确保第一个中断是上部到位,如不能保证就用2个外部中断吧。

并且2次中断间隔不能超厅空过65.536ms(12MHz),如超过就用t0中断计时。

思路就是上部中断清零TH0、TL0,下部中断统计。

unsigned

short

time

//时间行伏缺间隔

unsigned

char

bUp

=

0

//上部到位

static

void

int_ex0(void)

interrupt

0

using

1

{

if(bUp

==

0)

{

bUp

=

1

TH0

=

0

TL0

=

0

}

else

{

time

=

TH0

time

<<档辩=

8

time

|=

TL0

bUp

=

0

}

}

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

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

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

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

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

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

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

#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边沿触发,下降沿触发

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存