智能车制作
标题:
关于XS128输出比较模块小问题求助
[打印本页]
作者:
LCD
时间:
2012-5-31 10:20
标题:
关于XS128输出比较模块小问题求助
新手求助,各位大侠看看:
这是我的一段测试程序,简单的测试输出比较的功能 , 问题在注释里面!
void main(void) {
/* put your own code here */
MCUInit(32); // 设置总线频率32MHZ
DDRB |= 0xff; //配置IO口
PORTB = 0xFF;
TIE = 0x00; /* Disable all channel interrupt */
TIOS =0x01; /* channel 0 set to Output Compare */
TSCR1 = 0x80; /* Enable Timer; */
/*
如果TSCR1 = 0X90 自动清中断标志吗?可是运行发现反而不对了
*/
TSCR2 = 0x07; /* Prescale Factor = 128 */
TC0 = 25000;
/*
在这里给TC0赋值 25000 总线频率是32MHZ 那么比较中断一次的时间是 128/ 32000000 * 25000 = 0.1秒对吧?
在中断里计数4次就是1S了,可是灯的亮灭一直不对,请问我哪里理解错了?
现象是TC0不管赋不赋值 ,都是计数到65535才比较中断 奇怪了
*/
EnableCapCom(0); //开通道比较中断
EnableInterrupts; //开总中断
for(;;)
{
} /* loop forever */
/* please make sure that you never leave main */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 OutCompareCH0_ISR(void)
{
static uint16 counter = 0;
DisableInterrupts;
TFLG1 = BIT0; // 请中断标志
if( counter == 4 ) // 4次为1秒
{
PORTB = ~PORTB;
counter = 0;
}
counter += 1;
EnableInterrupts;
}
作者:
LCD
时间:
2012-5-31 10:41
我明白了,呵呵,要遭中段里面加上TC0 +=25000;
因为比较后TCNT不会清零~类似于MSP430,有意思
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2