智能车制作
标题:
飞思卡尔定时器问题
[打印本页]
作者:
jinkai
时间:
2012-7-8 12:09
标题:
飞思卡尔定时器问题
飞思卡尔定时器怎么计算定时时间,比如要定时1s,怎么写?下面程序定时是多少?
/*--------------------------------------------------*/
/*芯片型号:MC9S12XS128 LED跑马灯测试程序 */
/* 功能:LED测试程序 */
/* 程序由安阳创想电子科技编写 */
/*淘宝店铺:
www.shop34763529.taobao.com
*/
/* 电话:13523332693 */
/* QQ:262342506 */
/* 飞思卡尔系统的处理器为: MC9S12XS128 */
/* AVR系统的晶振频率: 24 Mhz */
/*---------------------------------------------------*/
#include <hidef.h>
#include <MC9S12XS128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
int counter;
void TimerOverflow(void) {
while (TCNT != 0x0000);
while (TCNT == 0x0000);
counter++;
if (counter == 8) PORTB = 0x7e; /* LED亮 */
if (counter == 7) PORTB = 0xbd;
if (counter == 6) PORTB = 0xdb;
if (counter == 5) PORTB = 0xe7;
if (counter == 4) PORTB = 0xe7;
if (counter == 3) PORTB = 0xdb;
if (counter == 2) PORTB = 0xbd;
if (counter == 1) PORTB = 0x7e;
}
/*时钟初始化*/
void Initial(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
REFDV=1; //总线时钟=48/2=24MHz
SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x80;
}
void main(void)
{
Initial();
TSCR1 = 0x80; /* 打开定时器 TCNT */
TSCR2 = 0x07; /* TCNT 开始计数 */
counter = 0;
DDRB=0xff; /* PTB 输出 */
PORTB=0xff; /* LED关闭 */
asm{
nop
}
for (;;)
{
TimerOverflow();
if (counter >= 8) {
counter = 0;
TSCR2 = 0x07;
}
}
}
作者:
独爱sheng
时间:
2012-7-8 13:22
频率太高了,设为8M就行了
作者:
451506709
时间:
2012-7-8 14:34
其实,不管频率多高都可以定时,48MHz不算高,莫非,你想降低频率和处理速度来换取低功耗{:soso_e144:}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2