标题: 请教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 |