外部中断和定时器中断在一起的程序怎么写

在外部中断时,另外设定5mS定时器中断。5mS定时器中断程序完成时对计数器Xn加1,外部中断程序完成时读Xn-同时清零Xn-... 在外部中断时,另外设定5mS定时器中断。5mS定时器中断程序完成时对计数器Xn加1,外部中断程序完成时读Xn- 同时清零Xn-  展开
 我来答
chunlaizh
推荐于2016-01-15 · 超过10用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:24.5万
展开全部
#include "reg51.h"
sbit a1=P3^2;

int Xn,SUM;

void time0_initial() //定时
{
TMOD=0x01;
TH0=(65535-5000)/256; //定时器0定时5ms
TL0=(65535-5000)%256;
EA=1;
}
void interrupt_0_initial()
{
IT0=0;
EX0=1;
EA=1;
}
void main(void)
{
interrupt_0_initial();
time0_initial() ;
while(1);

}

void time0() interrupt 1
{
TH0=(65535-5000)/256; //定时器0定时5ms
TL0=(65535-5000)%256;
Xn++;

}

void interrupt_0() interrupt 0
{

do
{

ET0=1;
TR0=1;
}while(a1==0)
ET0=0;
TR0=0;

SUM=Xn;
Xn=0;

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
warrrlock
2012-07-30 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:104万
展开全部
思路是这样的:
1 必须要有两个中断服务程序。1个为外部中断,另一个为定时器中断。
2 两个中断优先级需要外部中断程序比定时中断高。
3 xn为全局变量,可以由两个中断程序改写。
追问
外部中断优先级比定时中断高,就先执行外部中断、后执行定时中断,那怎么读Xn?
追答
嗯。外部中断会打断定时中断。
xn为全局变量,在中断服务程序里边读就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式