单片机中的Timer0Interrupt(void) interrupt 3怎么解释呢,希望您详细讲解。
1个回答
展开全部
咱们以AT89X52.h这个头文件来说明吧,这个文件中有这么个定义:
/*------------------------------------------------
Interrupt
Vectors:
Interrupt
Address
=
(Number
*
8)
+
3
------------------------------------------------*/
#define
IE0_VECTOR
0
/*
0x03
External
Interrupt
0
*/
#define
TF0_VECTOR
1
/*
0x0B
Timer
0
*/
#define
IE1_VECTOR
2
/*
0x13
External
Interrupt
1
*/
#define
TF1_VECTOR
3
/*
0x1B
Timer
1
*/
#define
SIO_VECTOR
4
/*
0x23
Serial
port
*/
#define
TF2_VECTOR
5
/*
0x2B
Timer
2
*/#define
EX2_VECTOR
5
/*
0x2B
External
Interrupt
2
*/
所以,
Timer0Interrupt(void)
interrupt
TF1_VECTOR
等价于你的这句
Timer0Interrupt(void)
interrupt
3
数字3前面的这个interrupt是C51中的一个关键字,当编译器看到它以后,就知道这个函数是一个中断函数,那么编译器就根据interrupt后面的这个数值进行计算,得到中断服务函数的入口地址,这里也就是定时器0的中断服务函数的入口地址0x1B,从而当定时器0中断时,程序指针PC就会指向0x1B,达到执行中断的目的。
/*------------------------------------------------
Interrupt
Vectors:
Interrupt
Address
=
(Number
*
8)
+
3
------------------------------------------------*/
#define
IE0_VECTOR
0
/*
0x03
External
Interrupt
0
*/
#define
TF0_VECTOR
1
/*
0x0B
Timer
0
*/
#define
IE1_VECTOR
2
/*
0x13
External
Interrupt
1
*/
#define
TF1_VECTOR
3
/*
0x1B
Timer
1
*/
#define
SIO_VECTOR
4
/*
0x23
Serial
port
*/
#define
TF2_VECTOR
5
/*
0x2B
Timer
2
*/#define
EX2_VECTOR
5
/*
0x2B
External
Interrupt
2
*/
所以,
Timer0Interrupt(void)
interrupt
TF1_VECTOR
等价于你的这句
Timer0Interrupt(void)
interrupt
3
数字3前面的这个interrupt是C51中的一个关键字,当编译器看到它以后,就知道这个函数是一个中断函数,那么编译器就根据interrupt后面的这个数值进行计算,得到中断服务函数的入口地址,这里也就是定时器0的中断服务函数的入口地址0x1B,从而当定时器0中断时,程序指针PC就会指向0x1B,达到执行中断的目的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询