这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » nec单片机学习之三 —— 16位定时器

共14条 1/2 1 2 跳转至

nec单片机学习之三 —— 16位定时器

工程师
2009-05-29 22:31:58     打赏

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

 




关键词: 单片机     学习     之三     16位     定时器    

菜鸟
2009-05-29 22:48:14     打赏
2楼

佩服 ,你学习的速度也太快了 

......................


工程师
2009-05-29 23:07:30     打赏
3楼
呵呵,我实现的都是最基本的功能!希望能给大家个参考,也好更快的入门!

高工
2009-05-29 23:29:42     打赏
4楼
加油,同时学习中

菜鸟
2009-05-30 22:56:32     打赏
5楼

LZ的好程序啊,学习中,编译好像会有错误,其实程序没有问题,好像是注释不能用//~·~·,而只能用/*~~~~~ */,这是在PM软件环境中的,


工程师
2009-05-30 23:10:40     打赏
6楼



是的,楼主这样设置。tools——>compiler options在下面的extend下勾选上Enable C++ Comment,如上图所示

专家
2009-05-31 08:02:28     打赏
7楼

必须要顶


菜鸟
2009-05-31 12:56:37     打赏
8楼
谢谢分享

助工
2009-05-31 13:00:27     打赏
9楼
/****************************
    时钟定时器间隔中断  F=8M/7  WTM.6.5.4=111 -30MS
****************************/
#pragma     vector=INTWTI_vect  //说明中断号
__interrupt void TWTI(void)
{
    time++;
    if(time>=30)
    {
        time=0;
        //if(rrt==0x00)rrt=0x08;
        //P6=rrt;
        //rrt>>=1;
    }
    WTIIF=0; //清中断标志位
}

哈哈!这样注释好了!

菜鸟
2009-06-02 08:33:57     打赏
10楼
狂热者 动作相当迅速啊

共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]