智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2155|回复: 3
打印 上一主题 下一主题

[编程类] 捕捉中断问题

[复制链接]

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
跳转到指定楼层
1#
发表于 2011-2-19 10:41:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
程序如下:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include<mc9s12xs128.h>

#define uint unsigned int
#define uchar unsigned char

//锁相环倍频至80MHz  总线频率为40MHz
//fPLLCLK=2*fOSCCLK*(SYNR+1)/(REFDV+1)
void PLL_init(void)
{   
  CLKSEL=0X00;        //disengage PLL to system
  PLLCTL_PLLON=1;     //turn on PLL
  SYNR =0xc0 | 0x04;  //SYNR=4                       
  REFDV=0x80 | 0x01;  //REFDV=1
  POSTDIV=0x00;       //pllclock=2*osc*(1+SYNR)/(1+REFDV); 2*16*5/2=80M
  _asm(nop);          //BUS CLOCK=pllclock/2
  _asm(nop);
  while(!(CRGFLG_LOCK==1));    //when pll is steady ,then use it;
  CLKSEL_PLLSEL =1;            //engage PLL to system;
}

//延时10us以上函数
void Delay1()
{
  uchar a,b,c;
  for(a=0;a<1;a++)
    for(b=0;b<1;b++)
      for(c=0;c<8;c++);
}  
//延时250ms
void Delay2()
{
  uchar a,b,c;
  for(a=0;a<250;a++)
    for(b=0;b<3;b++)
      for(c=0;c<220;c++);
}  
void A1output()
{
DDRA_DDRA1=1;//A0口设为输出
PORTA_PA1=1;
Delay1(); //延时10us以上
PORTA_PA1=0;
}
//--------------------定时器0初始化------------------//
void Time0_Init()
{
    TIOS=0x00;  //通道0输入捕捉
    TCTL4=0x03; //上升下降沿均捕捉
    TSCR2=0X05; //32分频 总线频率40M
    TIE=0x01;   //通道0开中断
    TSCR1_TEN=1;//启动定时器
}

void main(void)
{
  /* put your own code here */
      PLL_init();                           
      Time0_Init();
      
      DDRB=0xff;
      PORTB=0xff;
      
      for(;;) {
        _FEED_COP(); /* feeds the dog */
        EnableInterrupts;
        A1output();
        Delay2();
      }
}
//定时器通道0输入捕捉中断
#pragma CODE_SEG NON_BANKED            
void interrupt 8 Timer0_interrupt()
{
  DisableInterrupts;
  PORTB=~PORTB;
  TFLG1_C0F=1;      //清中断标志位
}
A1脚用杜邦线接至T0脚,如果响应中断的话灯应该一闪一闪的,可是灯一直是灭的,就是说没有进入中断,求大侠指导。谢谢。

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
2#
 楼主| 发表于 2011-2-19 16:14:20 | 只看该作者
知道结果了,闪的太快的原因,从而看不出来。
回复

使用道具 举报

3

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
935
QQ
威望
563
贡献
204
兑换币
182
注册时间
2012-1-10
在线时间
84 小时
3#
发表于 2012-2-12 17:19:48 | 只看该作者
肯定不是闪得太快,太快就会一直亮
回复

使用道具 举报

1

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
威望
160
贡献
30
兑换币
0
注册时间
2012-2-13
在线时间
9 小时
毕业学校
家里
4#
发表于 2012-2-13 14:46:55 | 只看该作者
为什么还有个 DisableInterrupts;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 13:23 , Processed in 0.048629 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表