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

- 积分
- 14
- 最后登录
- 1970-1-1
|
void main(void) {
EnableInterrupts; /* enable interrupts */
/* include your code here */
SOPT1 = 0x03;
SOPT2 = 0x00;
SPMSC1 = 0x19;
SPMSC2 = 0x00;
// SRS = 0x82;
// ICSSC = 0x10;
// ICSTRM = 0x80;
ICSC1 = 0x3A; //0x38
ICSC2 = 0xA6;// 0xa6
while(!ICSSC_OSCINIT) {
}
GNGC = 0x00;
PTASE = 0xDF;
PTBSE = 0xFF;
PTCSE = 0xFF;
PTADS = 0x00;
PTBDS = 0x00;
PTCDS = 0x00;
PTAPE = 0x8F;
PTADD = 0x40;
PTBPE = 0x02;
PTBDD = 0x3D;
PTCPE = 0x00;
PTCDD = 0xBF;
//AD使能,选择AD端口
APCTL1 = 0x00;
APCTL2 = 0x40;
ADCCFG = 0x08;//用的输入时钟
ADCCVL = 0x00;
ADCCVH = 0x00;
ADCSC2 = 0x00;
ADCSC1 = 0x4E; //AD14输入端口,控制中断使能
//定时器624uS
// MTIMSC=0x10;
// MTIMMOD = 0x9B;//
// MTIMCLK = 0x04;
// (void)(MTIMSC == 0);
// MTIMSC = 0x60;
// 定时器624uS
TPM1SC=0X00;
TPM1C0SC=0X50;
TPM1CNTH=0X00;
TPM1SC=0X08;
asm CLI;
for(;;) {
// __RESET_WATCHDOG(); /* feeds the dog */
if(AD_flag==1){
AD_flag=0;
rms_cur=sqrtf(AD_sp)*modulus;
AD_sp=0;
if(rms_cur*1.5386>=act_key_cur)
{
time_flag=1;
if(rms_t*1.25/1000>=act_key_t)
{
time_flag=0;
// TK_sign=1;
// BJ_sign=1;
}
// TK_sign=0;
// BJ_sign=0;
}
// TK_sign=0;
// BJ_sign=0;
}
} /* loop forever */
/* please make sure that you never leave main */
}
/**/ //VectorNumber_Vtpm1ch0
void interrupt 26 tpm1ch0Isr(void)
{
ADCSC1 = 0x4E;
// MTIMSC = 0x80;
Time100++;
Time500++;
TK_sign=~TK_sign;
if(Time100==100)
{
Time100=0;
test_key();
}
if(Time500==500)
{
Time500=0;
dial_code();
}
if(time_flag==1)
{
rms_t+=625;
}
}
由于定时器不能控制,设定时间为625uS,但是实际时间在160uS左右。非常奇怪
|
|