想问的是中断服务函数中i是如何加到1000的。普通的让我看我会以为i++只执行一次。是因为一直在循环中断服务函数跳不出来才能到1000的吗?可是我去掉while(1);语句现象就不对了,希望大佬们赐教
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^0;
void Timer0Init()
{
TMOD|=0x01; //TMOD赋值
TH0=0xFC; //初值 FC18,1ms之后产生中断
TL0=0x18; //初值 FC18
ET0=1; //允许位
EA=1; //总中断
TR0=1; //开启定时计数器功能
}
void main()
{
Timer0Init();
while(1);
}
void Time0() interrupt 1
{
static u16 i;
TH0=0xFC; //初值 FC18,因为中断之后,该值变为0,所以要重新赋值
TL0=0x18; //初值 FC18
i++;
if(i==1000)
{
i=0;
led=~led;
}
}
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^0;
void Timer0Init()
{
TMOD|=0x01; //TMOD赋值
TH0=0xFC; //初值 FC18,1ms之后产生中断
TL0=0x18; //初值 FC18
ET0=1; //允许位
EA=1; //总中断
TR0=1; //开启定时计数器功能
}
void main()
{
Timer0Init();
while(1);
}
void Time0() interrupt 1
{
static u16 i;
TH0=0xFC; //初值 FC18,因为中断之后,该值变为0,所以要重新赋值
TL0=0x18; //初值 FC18
i++;
if(i==1000)
{
i=0;
led=~led;
}
}