[讨论] 定时器模块底层控制原理三态门求高手

敏而好学的菜鸟   2014-4-19 17:48 楼主
  1. #include "msp430x14x.h"
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  5.                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  6. uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. uchar n=0,i=0;
  8. void main( void )
  9. {
  10.   uint a;
  11.   // Stop watchdog timer to prevent time out reset
  12.   WDTCTL = WDTPW + WDTHOLD;

  13.   //IE1|=WDTIE;
  14.   //WDTCTL=WDT_ADLY_1_9;
  15.   P4DIR=0xff;
  16.   P6DIR|=0x18;
  17.   P4OUT=0x00;

  18. /*
  19.   BCSCTL1&=~XT2OFF;    //设置XT2CLK有效
  20.   do
  21.   {
  22.     IFG1&=~OFIFG;       //清除失效标志
  23.     for(a=0xff;a>0;a--);//稳定时间
  24.   }
  25.   while((IFG1&OFIFG)!=0); //如果失效标志仍存在则继续循环清除 */
  26.   BCSCTL2|=SELS;   // 选择XT2CLK为SMCLK的时钟源
  27.   
  28.   
  29.   CCTL0=CCIE;   //CCR0中断允许
  30.   CCR0=20000;
  31.   TACTL=TASSEL_2+TACLR+MC_1;//定时器A时钟源为SMCLK,计数器清零,增计数模式
  32.   _EINT();
  33. }
  34. #pragma vector=TIMERA0_VECTOR
  35. __interrupt void timer_A(void)
  36. {
  37.   P6OUT=0x08;
  38.   P4OUT=0x00;
  39.   P4OUT=wei[i++];
  40.   P6OUT=0x10;
  41.   P4OUT=num[n++];
  42.   P6OUT=0x00;
  43.   if(i==8)i=0;
  44.   if(n==8)n=0;
  45. }




上面的代码运行正常!有疑问的地方是:
比如上面的程序中选择子系统时钟源SMCLK为XT2,使用之前要打开XT2,XT2才进入工作状态
代码如下:
BCSCTL1&=~XT2OFF;    //设置XT2CLK有效
  do
  {
    IFG1&=~OFIFG;       //清除失效标志
    for(a=0xff;a>0;a--);//稳定时间
  }
  while((IFG1&OFIFG)!=0); //如果失效标志仍存在则继续循环清除 */

我在程序中屏蔽掉了这一段;但是程序依旧如开始一样运行良好
也就是说没打开XT2 ,子系统时钟会默认选择DCO 800KHZ 运行程序
按照这个时钟源频率 数码管刷新现象会变得很明显(即目视能看清数码管是一个一个动态刷新的,已验证),
可是数码管的刷新还是和原来没屏蔽这段的现象一样,如果屏蔽下面的一句代码
  BCSCTL2|=SELS;   // 选择XT2CLK为SMCLK的时钟源
就会出现目视能看清数码管是一个一个动态刷新的现象

查了下资料 为了方便下面是时钟模块的截图
C:\Documents and Settings\Administrator\桌面
即控制XT2是否输出的是一个三态门 只有在三态门的使能端EN = 1(相当于XT2OFF = 0) 时输出才随输入变化,
即当XT2OFF = 1时(相当于EN = 0)为第三种状态高阻态(既不是高电平也不是低电平)
可是上面的程序中明明屏蔽掉了打开XT2部分的代码,只是SMCLK选择了XT2做为时钟源 可是实验测试证明SMCLK工作的时钟源
不是默认的时钟源DCO而是XT2。
这是为什么呢???

回复评论 (2)

时钟模块的图片没有传上去。。。不好意思啊 我在看看能不能传上去
点赞  2014-4-19 17:51
时钟模块截图
  • 时钟模块截图.jpg
点赞  2014-4-19 17:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复