打印

为什么不要红色一段代码,XT2也能工作啊?数码管动态扫描

[复制链接]
807|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梦幻泡影4|  楼主 | 2014-4-19 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "msp430x14x.h"
#define uchar unsigned char
#define uint  unsigned int
uchar num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
               0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar n=0,i=0;
void main( void )
{
  uint a;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  //IE1|=WDTIE;
  //WDTCTL=WDT_ADLY_1_9;
  P4DIR=0xff;
  P6DIR|=0x18;
  P4OUT=0x00;

BCSCTL1&=~XT2OFF;    //设置XT2CLK有效
  do
  {
    IFG1&=~OFIFG;       //清除失效标志
    for(a=0xff;a>0;a--);//稳定时间
  }
  while((IFG1&OFIFG)!=0); //如果失效标志仍存在则继续循环清除

  BCSCTL2|=SELS;   // 选择XT2CLK为SMCLK的时钟源


  CCTL0=CCIE;   //CCR0中断允许
  CCR0=20000;
  TACTL=TASSEL_2+TACLR+MC_1;//定时器A时钟源为SMCLK,计数器清零,增计数模式
  _EINT();
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timer_A(void)
{
  P6OUT=0x08;
  P4OUT=0x00;
  P4OUT=wei[i++];
  P6OUT=0x10;
  P4OUT=num[n++];
  P6OUT=0x00;
  if(i==8)i=0;
  if(n==8)n=0;
}



这是我自己写的数码管动态扫描程序,为什么不要红色一段代码,XT2也能工作啊?
求大神帮忙,,求解!!



相关帖子

沙发
梦幻泡影4|  楼主 | 2014-4-19 18:57 | 只看该作者
dwh000 发表于 2014-4-19 18:19
是简历稳定震荡部分的代码,外部时钟切换前,应该确保外部时钟已经稳定的震荡,可以保证系统运行稳定,不进行检 ...

是不是XT2OFF好似一个让它起振的开关?

使用特权

评论回复
板凳
梦幻泡影4|  楼主 | 2014-4-19 18:59 | 只看该作者
dwh000 发表于 2014-4-19 18:19
是简历稳定震荡部分的代码,外部时钟切换前,应该确保外部时钟已经稳定的震荡,可以保证系统运行稳定,不进行检 ...

不用打开XT2OFF,它自己也能震荡起来

使用特权

评论回复
地板
dirtwillfly| | 2014-4-20 12:27 | 只看该作者
红色部分代码只是预防没起震

使用特权

评论回复
5
通宵敲代码| | 2014-4-20 15:45 | 只看该作者
红色代码只是判断有没有晶振起振,没起振程序不会继续运行,起振后这段代码就没用了!

使用特权

评论回复
6
smilingangel| | 2014-4-20 19:52 | 只看该作者
这个问题的我到没咋注意的,,不过XT2所接低频晶振是可以自己起振的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝