在线时间0 小时
UID173027
注册时间2010-3-2
NXP金币0
该用户从未签到
新手上路

- 积分
- 46
- 最后登录
- 1970-1-1
|
程序是龙邱老师的TIM和ECT,改动了一点点。但是为什么向TFLG1写1时清除不了标志位呢
/********************************************
龙丘MC9S12XEP100多功能开发板
Designed by Chiu Sir
E-mail:chiusir@yahoo.cn
软件版本:V1.1
最后更新:2010年7月20日
相关信息参考下列地址:
------------------------------------
Code Warrior 5.0
Target : MC9S12XEP100
Crystal: 16.000Mhz
busclock:16.000MHz
pllclock:32.000MHz
-------------------------------------
说明:
分别演示ECT_TIMER和TIM_TIMER,
ECT_TIMER PB7指示 中断周期 80ms
TIM_TIMER PB6指示 中断周期 320ms
中断周期没有推敲,大家可以自己算算看。
============================================*/
#include
#include "derivative.h"
#define LEDCPU PORTK_PK5
#define LEDCPU_dir DDRK_DDRK5
//产生?ms的定式中断
void ECT_Timer_Init(void)
{
//ECT_TSCR1=0X80;//TIMER INT ENABLED
ECT_TSCR1=0x90;//计数器使能TEN|快速清零TFFCA
//TIM_TSCR1=0X00; //禁止TIM
ECT_TSCR2=0X85;//DIV 32->80ms
ECT_TIOS = 0xc0;
ECT_TCNT =0; //
ECT_PACTL=0X50; //PT7 PIN,PACN32 16BIT
ECT_TFLG1 = 0xff; // 清除各IC/OC中断标志位
ECT_TFLG2 = 0xff; // 清除自由定时器中断标志位
}
void TIM_Timer_Init(void)
{
//TIM_TSCR1=0X80;//TIMER INT ENABLED
TIM_TSCR1=0x90;//计数器使能TEN|快速清零TFFCA
//TIM_TSCR1=0X00; //禁止TIM
TIM_TSCR2=0X87;//DIV 128->320ms
TIM_TIOS = 0xc0;
TIM_TCNT =0; //
TIM_PACTL=0X50; //PT7 PIN,PACN32 16BIT
//ICPAR=0; //8BIT DISABLED
TIM_TFLG1 = 0xff; // 清除各IC/OC中断标志位
TIM_TFLG2 = 0xff; // 清除自由定时器中断标志位
}
//-----------------------------------------------------
// PLL初始化子程序 BUS Clock=16M
void setbusclock(void)
{
CLKSEL &= 0x7f; //set OSCCLK as sysclk
PLLCTL &= 0x8F; //Disable PLL circuit
CRGINT &= 0xDF;
SYNR = 0x47;
REFDV = 0x42; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
PLLCTL =PLLCTL|0x70; //Enable PLL circuit
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK is Locked already
CLKSEL |= 0x80; //set PLLCLK as sysclk
}
//-----------------------------------------------------
#pragma CODE_SEG DEFAULT
void Init_Dev(void)
{
setbusclock();
ECT_Timer_Init();
TIM_Timer_Init();
DDRB = 0xff; //OUT FOR LED
PORTB= 0x00; //LEDs on
LEDCPU_dir = 1;
LEDCPU = 0;
DDRK_DDRK6 = 1;
PORTK_PK6 = 0;
ECT_TFLG1_C7F = 1;
ECT_TC7 = ECT_TCNT + 25000;
TIM_TFLG1_C6F = 1;
//TIM_TC6 = TIM_TCNT + 2500;
}
void Dly_ms(int ms)
{
int ii,jj;
if (ms
|
|