新闻  |   论坛  |   博客  |   在线研讨会
78k0/kc2学习之16位定时器
电子狂热者 | 2009-05-30 15:52:07    阅读:2097   发布文章

78K0/KC2单片机有多达7通道的定时器:

16 位定时器/事件计数器: 1 通道
8 位定时器/事件计数器: 2 通道
8 位定时器: 2 通道
钟表定时器: 1 通道
看门狗定时器: 1 通道
其中的16位定时器./事件计数器00有间隔定时器、方波输出、外部事件计数器、单脉冲输出、PPG输出和脉冲宽度测量六大功能。今天我利用他的间隔定时器功能实现了相对精确的LED 1s闪烁灯,程序如下:
#pragma sfr
#pragma ei
#pragma di
#pragma interrupt INTTM000 MD_INTTM000

#define   uchar unsigned char
#define   uint  unsigned int

uchar flag;

void SysInit()
{
 IMS    = 0xc8;
 IXS    = 0x0c;
 DI();
 OSCCTL = 0x40;
 PCC    = 0x00;       //Fcpu=Fxp
 RCM    = 0x83;       //lsrstop,rstop
    MOC    = 0x00;       //X1
/* Selection of clock supplied to main system clock and peripheral hardware (XSEL, MCM0) */   
    MCM    = 0x05;      
    EI();
}

void main()
{  
 SysInit();
    TMMK000 = 0;    //INTTM000 enabled
    CRC00 = 0;      //as comparator
    PRM00 = 0x02;   //inter clock = Fpsr/256
    CR000 = 0x7fff;  //T = 1s
    PM6.0 = 0;
    P6.0  = 0;
    TMC00 = 0x0c;    //clear & start occurs on match between TM00 and CR000
    for(;;)
    {
     while(!flag);
     flag = 0;
     P6.0 = ~P6.0;
    }
}

__interrupt void MD_INTTM000(void)
{
    flag = 1;
}

 


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客