微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机中断时如何执行的?

单片机中断时如何执行的?

时间:10-02 整理:3721RD 点击:
RT。
#include<reg52.h>


void main()
{
        TMOD=0x01;                                         
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;
        EA=1;        //开总中断
        ET1=1;       //允许定时/计数器1 中断
        TR1=1;
       while(1)
{

if(num<10)
{};

}
void T0_time () interrupt 1  //定时器中断函数
{
    TH0 = ( 65536 - 500 ) / 256;
        TL0 = ( 65536 - 500 ) % 256;
        num ++;
if(num=20)
{
num=0;
}
}

这个程序中,是不是在main函数中,定时器就已经开始计数了?在下面中断服务中,如果num的值符合main的条件,怎么办?

符合MIAN的值就得去MIAN里运行,如果你的NUM在MIAN中无法大于10,那么你写的定时里的NUM的赋值0就没用意义,在你SETB EA,ET0,TR0时,计数器就开始计数

TR1=1;定时器启动;小编要明白进入中断后,只有执行完中断服务程序才能返回main

恩恩。是不是可以这样认为,定时器一直在计数,当溢满时,重新被初始化,继续计数?

num没加一次,就是回到while程序中,然后在回到中断服务中,依次循环。?

定时器是一值在扫描的,只有定时时间到就一定会进定时中断去执行里面的内容

多谢大神!   

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top