智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1437|回复: 0
打印 上一主题 下一主题

新手任务~~并问个小问题~~~

[复制链接]

2

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
QQ
威望
244
贡献
44
兑换币
2
注册时间
2011-7-29
在线时间
17 小时
跳转到指定楼层
1#
发表于 2011-7-30 20:00:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想利用ECT的输出比较实现定时中断,写了如下代码
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

unsigned int m = 0;
unsigned int n = 0;

void PLL_Init(void)
{
  CLKSEL = 0x7F;
}

void ECT0_Init(void)
{
  TIOS = 0x01;//定时通道0使能输出比较
  TC0  = 0x007D;//比较值为125
  TCTL2 = 0x02;//其他七路与定时器断开,0通道输出清零
  TSCR2 = 0x86;//使能溢出计数器中断,禁止计数器比较后匹配复位,64分频
  TSCR1 = 0x80;//使能计数器
  TIE = 0x01;//通道0输出比较中断使能
}

void PORT_Init(void)
{
  DDRA = 0x01;
  PORTA = 0x00;
}

void main(void)
{
  PLL_Init();
  ECT0_Init();
  PORT_Init();

        EnableInterrupts;

  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
}

#pragma CODE_SEG NON_BANKED
void interrupt 8 Timer0_ISR(void)
{
  TFLG1_C0F = 1;//清中断
  m = TCNT;//此操作后TC0被自动清0
  TC0 = m + 125;
  n ++;
  if(n < 500)
  {
    PORTA = 0x01;
  }
  else if((n > 500)&&(n < 1000))
  {
    PORTA = 0x00;
  }
  else n = 0;
}
单步调试运行正确,PA0的小灯闪烁。连续运行时出现大量BGND汇编命令(back ground mode后台调试模式),该命令相当于软件的程序断点,使得程序无法连续运行,原因不明,求解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-25 07:21 , Processed in 0.043363 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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