长春抗癌研究所可信吗:H8/3048定时器设置

来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 12:52:12

#include

#include <3048f.h>

#include "kernel_id.h"

#include "sample1.h"

 

void main_task(VP_INT exinf)

{

    unsigned int i = 0;           

    syslog(LOG_NOTICE, "Program starts.");

 

    PB.DR.BIT.B6 = 1;            

    PB.DR.BIT.B7 = 1;                   

   

    ITU1.TCR.BIT.TPSC = 0;                                        

    ITU1.TCR.BIT.CCLR = 1;        

    ITU1.TIOR.BIT.IOA = 2;     

   ITU1.GRAH = 0xAC;

    ITU1.GRAL = 0xCD;            //1/22.1184/1000)=2ms

    ITU.TSTR.BIT.STR1 = 0;     //关闭定时器   

  while (1)

     {

       PA.DR.BYTE = 0x0B;         

       if (!P7.DR.BIT.B3)                   

        {                

            PB.DR.BIT.B6 = 0;

            Flag = 1;

        }

       if(Flag)

        {

            ITU.TSTR.BIT.STR1 = 1;    //开启定时器

           if (ITU1.TSR.BIT.IMFA)   

           {

                i++;

                ITU1.TSR.BIT.IMFA = 0;

              if(i==5000)

                   {

                    PB.DR.BIT.B7 = 0;        

                   }

               }

        }

     }

    syslog(LOG_NOTICE, "Program ends.");

    kernel_exit();

}   

       定时器初始化如下:

1.选择定时器时钟源。

2.选择计数清0方法。

3. 通过定时器I/O控制寄存器TIOR选择输出比较或输入扑捉功能。

4.装载初值。设置计数周期。

5.开启中断源。

6.启动定时器。

Viod Init_timer1()

              {

ITU1.TCR.BIT.TPSC = 0;      //选择定时器时钟源,内部时钟源。        ITU1.TCR.BIT.CCLR = 1;         //选择TCNT由GRA比较相等清0。

ITU1.TIOR.BIT.IOA = 2;         //I/O控制位,选择比较GRA相等时输1。

ITU1.GRAH = 0xAC;

ITU1.GRAL = 0xCD;              //初值装载,计数周期T=2ms

ITU1. TIER.BIT.IMIEA = 1;      //定时器中断允许寄存器,输入相等中断

ITU.TSTR.BIT.STR1 = 0;         //关闭计数器

}