Board logo

标题: 请教GZ60定时器中断问题【附程序】 [打印本页]

作者: perfume    时间: 2007-8-10 14:39

高手们指点一下把~~ 急
作者: superman0007    时间: 2007-8-10 20:18

进中断必须先清中断标志位,而在你的中断子程序里没有,所以只要一进中断,就不会再出来
作者: perfume    时间: 2007-8-10 21:58

清了 啊  你再看看
作者: perfume    时间: 2007-8-11 15:44

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);


}


这个怎么进不到中断里面~~~~
作者: perfume    时间: 2007-8-11 15:45     标题: 请教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编辑过]


作者: zxs9933    时间: 2007-8-12 16:43

interrupt void CH1F_interrupt (void)
的interrupt 是多少号中断,中断号要加上啊~!
作者: perfume    时间: 2007-8-15 08:10

我用的是VECTOR ADDRESS 0xfff2 CH1F_interrupt




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0