一个单片机C语言的问题

代码如下:voidtim0()interrupt1using0{ucharcount;TH0=(65536-46080)/256;TL0=(65536-46080)%25... 代码如下:
void tim0() interrupt 1 using 0
{
uchar count;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
count++;
if(count==20) //11.05921
{
count=0;
j=j+8;
if(j==128)
{
j=0;
}
}
}

void main()
{
TMOD=0x01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
for(i=0;i<8;i++)
{
P0=hen[i];
P1=lie[i+j];
del(2);
}
}
}

想问一下:main( )函数中,设置中断/计时器寄存器后,是先执行中断子程序还是先执行while(1)循环体,直到计时器激发中断才转为执行中断子程序?
为什么?先谢谢解说,麻烦说详细点。
再问一句,执行while(1)循环等中断时间到后转而执行中断子程序,执行完子程序后下一个中断未到来前是否还是回到while(1)循环继续执行?
展开
 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
duxingzhewan
2011-05-27 · TA获得超过279个赞
知道答主
回答量:49
采纳率:0%
帮助的人:66.2万
展开全部
1、先执行while(1),因为单片机运行是一直执行的是主程序,只有当中断发生了(而且寄存器EA设置成允许T0中断),这时单片机才会响应中断,并执行中断服务程序。这是单片机自身约定好的中断响应方式。
2、进入中断服务程序前单片机会先保存下一条将要执行指令的地址,当中断返回后,单片机会自动转到主程序中,并且从之前保存的指令地址处取指令,然后再执行。每次中断都是这样,所以程序会在while循环和中断程序之间来回切换。
意法半导体(中国)投资有限公司
2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
百度网友521b92790
2011-05-27 · TA获得超过547个赞
知道小有建树答主
回答量:279
采纳率:100%
帮助的人:221万
展开全部
肯定是先执行while(1)循环,main ()中的只是计时器初始值初装而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kerrwang1982
2011-05-27 · TA获得超过356个赞
知道小有建树答主
回答量:497
采纳率:0%
帮助的人:397万
展开全部
先执行while程序啊,时间中断需要计数器到达时间后才能执行。

中断未执行前j=0;

j=j+8;
if(j==128)
这里有错误,128/8=3.5。

因此永远无法符合j==128,必须改为 if(j>=128) 才可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式