芯睿MK9M186P定时器例程C语言

芯睿MK9M186P定时器例程

#include  "MK9M189P.h"
#include <clib9m189p.h>


unsigned char flage=0;
unsigned short num=0;

void INT(void) __interrupt//中断
{

   if(IRQFbits.TM0F) { //0.5秒执行一次
   // PA_DATbits.PA2 =  1;

    
    num++;
    if(num>=10)
    {
      PA_DATbits.PA2 = 0;
      num==0;
    }
/*
    else
    {
     PA_DATbits.PA2 = 0;
    }
    */
   }
 IRQFbits.TM0F = 0;
PA_DATbits.PA2 =  1;
}

void Slow32KHz()//设置晶振频率
{
   SYS_CTL0 = 0x00;
   SYS_CTL1 = 0x00;

   Nop();
   Nop();
}
//------------------------------------------------------------------------------

void Fast4MHz()
{
   SYS_CTL0 = 0x00;
   SYS_CTL1 = 0x01;

   SYS_CTL0 = 0x80;
   Nop();
   Nop();
}

void Initial()
{
   ClrWdt();

//引脚全部初始化
   PA_DIR = 0x00;
   PB_DIR = 0x00;
   PC_DIR = 0x00;
   PD_DIR = 0x00;
   PE_DIR = 0x00;
   PF_DIR = 0x00;

   PA_DAT = 0x00;
   PB_DAT = 0x00;
   PC_DAT = 0x00;
   PD_DAT = 0x00;
   PE_DAT = 0x00;
   PF_DAT = 0x00;

}



void main() 
{ 
  Initial();
  Slow32KHz();

//配置T0定时器

   Set_TMR0(T0_CTL_EN |        // T0 时钟源被禁用
            T0_CTL_WR_CNT_EN |  // T0 定时器计数寄存器开启
            T0_CTL_IRQS_TM0 |   // T0 中断输出为溢出中断
            T0_CTL_SUR_PH6 |    // T0 时钟源选择 6分频
            T0_CTL_DUTY1_3,    //  2T  32000Khz/2T/PH6(6分频)
            0x01);//定时值

//配置中断源
   Set_IRQM(IRQM_TM0M_EN);  //TIM0定时器中断开启
   IRQMbits.TM0M = 1;
   IRQM_CTLbits.INTM = 1; //总中断开启
   OpenTMR0();


  while(true)
  {
   
   

  }

} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值