芯睿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)
{
}
}
1581

被折叠的 条评论
为什么被折叠?



