定时器3中断程序,不知怎么进不了中断,貌似定时器没有开始计数,请帮忙分析分析,不胜感激!
#include <SH79F166A.H>
/********************************/
/* 系统字节函数定义 */
/********************************/
#define MAKEWORD(v1,v2) (((Word)(v1)<<8) + (Word)(v2))
#define HIBYTE(v1) ((Byte)((v1)>>8))
#define LOBYTE(v1) ((Byte)((v1)&0xff))
#define LongToBin(n) \
( \
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define Bin(n) LongToBin(0x##n##l) //write binary charactor set,exsample : Bin(11111111) = 0xff
void Init_Foc(void);
void Init_Io(void);
void Init_Timer(void);
unsigned int num=0;
void main(void)
{
INSCON &= 0xbf; //进入bank0
Init_Foc();
Init_Io();
Init_Timer();
EA=1;
while(1);
}
void Timer3_ISP(void) interrupt 11
{
INSCON |= 0x40;
TF3=0;
TL3=(65536-50000)&0x00ff;
TH3=((65536-50000)>>8)&0x00ff;
INSCON &= 0xbf;
num++;
if(num==20)
{
num=0;
P1=~P1;
}
}
/*******************************************************************************************
** 函数名称: Init_Foc
** 函数描述: OSCXCLK为OSCSCLK
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_Foc(void)
{
CLKCON = Bin(00001100); //12M
}
/*******************************************************************************************
** 函数名称: Init_Io
** 函数描述: 初始化IO端口
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_Io(void)
{
P1 = Bin(00000000);
P1CR = Bin(11111111); //P1端口为输出模式
}
/*******************************************************************************************
** 函数名称: Timer
** 函数描述: 定时器初始化
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_Timer(void)
{
INSCON |= 0x40;//进入Bank1
T3CON = Bin(00000000);
TL3=(65536-50000)&0x00ff;
TH3=((65536-50000)>>8)&0x00ff;
TR3=1;
IEN1 = Bin(00001000); //使能定时器3中断
INSCON &= 0xbf; //进入Bank0
} |