首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教GZ60定时器中断问题【附程序】

高手们指点一下把~~ 急
进中断必须先清中断标志位,而在你的中断子程序里没有,所以只要一进中断,就不会再出来
清了 啊  你再看看
void Sys_init(void);
void Pll_init(void);
void Ports_init(void);



/*************************************************
FUNCTION:SYSTEM INITATION
功能:初始化时钟,I/O口SPI初始化

*************************************************/

void Sys_init(void)

{
CONFIG1 = 0x2b; // 允许使用LVI STOP
CONFIG2 = 0x79; //使用外部时钟
Pll_init();
Ports_init();
EnableInterrupts;
}
/*************************************************
FUNCTION: PLL INITIATION
功能:PLL初始化;内部总线时钟为8MHZ
************************************************/
void Pll_init(void)

{
unsigned char i;

do
{
PCTL &= 0xdf;
PCTL &= 0x7f;
PMSH = 0;
PMSL = 0x04;
PMRS = 0x70;


PCTL &= 0xfe;
PCTL |= 0x02;

PCTL |= 0x20;
PBWC |= 0x80;
for(i=0;i<250;i++)
{
_asm(nop);
}

}while(!(PBWC&0X40));

PCTL |= 0x10;
}

/*****************************************************************
FUNCTION: ports_init
功能: 初始化各个I/O口
****************************************************************/
void Ports_init(void)
{
DDRE_DDRE2 = 1;
DDRE_DDRE3 = 1;


}






/******************************************************
FUNCTION : Timer_init()
功能 : 定时器的初始化;设置为通道1的比较输出
*******************************************************/
void Timer_init(void)
{
unsigned char temp;
temp = T1SC1;
T1SC1 &=0XE3;
temp = T1SC;
T1SC = 0X30;
temp = T1SC1;
T1SC1 = 0X54;
T1MODH = 0xFF;
T1MODL = 0x00;
T1CH1H = 0x7F;
T1CH1L = 0x80;
T1SC_TSTOP = 0;

}
/******************************************************
FUNCTION :CH0IE_interrupt
功能 :发送数据
****************************************************/
interrupt void CH1F_interrupt (void)

{

unsigned char temp;
PTE_PTE2 = 0;
T1SC1_CH1IE = 0;
temp = T1SC1;
T1SC1_CH1F = 0;


T1SC1_CH1IE = 1;

}



void main(void)

{

Sys_init();
while(1);


}


这个怎么进不到中断里面~~~~

请教GZ60定时器中断问题【附程序】

各位好:我用的是GZ60,外部晶振8M;但是老在中断里面出不来,老是产生中断;请帮忙看一下CONFIG的设置对吗? 这样设置总线频率是多少啊?
void MCU_init(void)

{
[color=#FF1493]CONFIG1 = 0x39; //  COPRS LVISTOP LVIRSTD LVIPWRD LVI5OR3 SSREC STOP COPD

CONFIG2 = 0x48; //这里设置对吗? 0 MCLKSEL MCLK1 MCLK0 MSCANEN TBMCLKSEL OSCENINSTOP SCIBDSRC

PCTL_PLLON =0;

ports_init();
EnableInterrupts;

}

void ports_init(void)

{
DDRE_DDRE3 = 1;
DDRE_DDRE2 = 1;
DDRE_DDRE4 = 1;
DDRE_DDRE5 = 1;

}


void Timer_init(void)

{
T1SC = 0x75;
T1MOD = 30;
T1SC_TSTOP = 0;

}


interrupt void T1TOF(void)

{

temp = T1SC;
T1SC = (T1SC&0x7f);

if(flag ==1) PTE_PTE2 = !PTE_PTE2;
else PTE_PTE3 = !PTE_PTE3;

}



void main(void)
{
unsigned char data=0xaa;
unsigned char j;
MCU_init();

while(1)
{
Timer_init();
data=0xaa;
for(j=0;j<8;j++)
{
if((data&0x80)==0x80) flag =1;
else flag = 0;

data = (data<<1);
while((T1SC&0x80)==0); //这里对吗?
}
}

}

[此贴子已经被作者于2007-8-10 11:10:11编辑过]

[此贴子已经被作者于2007-8-10 11:11:08编辑过]

[此贴子已经被作者于2007-8-11 15:45:42编辑过]

interrupt void CH1F_interrupt (void)
的interrupt 是多少号中断,中断号要加上啊~!
我用的是VECTOR ADDRESS 0xfff2 CH1F_interrupt
返回列表