【TI 技术资料分享】高速晶体振荡器设置

[复制链接]
861|7
 楼主| 胡斯哲 发表于 2015-3-14 18:03 | 显示全部楼层 |阅读模式
  1. #include  <msp430x14x.h>

  2. unsigned char Seg_code[]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  3. // SEG 数字0—9   共阳
  4. unsigned char Seg_Wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   
  5. // 位选
  6. int a=0,c=0;

  7. void delay(unsigned int timer)
  8. {
  9.   for(;timer>0;timer--);
  10. }

  11. void WR_595(unsigned char Data)     //要写入的数据
  12. {
  13.    unsigned char i;  
  14.    for(i=0;i<8;i++)
  15.    {
  16.      if(Data&0x80)
  17.      P5OUT|=0x02;
  18.      else  
  19.      P5OUT&=0xfd;                  
  20.      P5OUT|=0x08;                   // SHCP=1;  上升沿
  21.      P5OUT&=0xf7;                   // SHCP=0;
  22.      Data<<=1;                      //从高位开始取数据
  23.    }
  24.     P5OUT|=0x01;                    //STCP=1;
  25.     P5OUT&=0xfe;                   // STCP=0;
  26. }



  27. void display()
  28. {
  29.    unsigned char i;
  30.    for(i=0;1<8;i++)
  31.    {
  32.         WR_595(Seg_Wei[7]);
  33.         WR_595(Seg_code[a%10]);
  34.         P5OUT&=~0xfe;  
  35.         P5OUT|=0x01;
  36.         WR_595(Seg_Wei[6]);
  37.         WR_595(Seg_code[a/10%10]);
  38.         P5OUT&=~0xfe;  
  39.         P5OUT|=0x01;
  40.         WR_595(Seg_Wei[5]);
  41.         WR_595(Seg_code[a/100%10]);
  42.         P5OUT&=~0xfe;  
  43.         P5OUT|=0x01;   
  44.    }
  45. }

  46. void main( void )
  47. {
  48.   unsigned char i;
  49.   WDTCTL = WDTPW + WDTHOLD;    // Stop watchdog timer to prevent time out reset
  50.   BCSCTL1 &=~XT2OFF;           //打开高速晶体振荡器
  51.   do                            //等待起震
  52.   {
  53.     IFG1 &=~OFIFG;
  54.     for(i=0xff;i>0;i--);
  55.   }while( (IFG1&OFIFG)!=0 );
  56.   BCSCTL2 |= SELS+SELM_2;      //smclk,mclk为xt2
  57.   CCTL0 = CCIE;                 //允许中断
  58.   TACTL = TASSEL_2 + TACLR +MC_2;//timera的时钟源为smclk  清除ccr0 连续计数
  59.   P4DIR|=BIT1;
  60.   P5DIR=0x0b;                  // P5.0=STCP  P5.1=DS  P5.3=SHCP  为输出口         
  61.   P5OUT&=0xf6;     
  62.   P5SEL&=0xf6;
  63.   _EINT();
  64.   while(1)
  65.   {
  66.     display();
  67.   }
  68. }

  69. #pragma vector = TIMERA0_VECTOR
  70. __interrupt void TIMERA (void)
  71. {c++;
  72.   if(c==100)
  73.   {P4OUT^=BIT1;
  74.   a++;
  75.   c=0;}
  76. }


smilingangel 发表于 2015-3-17 22:36 | 显示全部楼层
这个需要结合原理图来看看的吧。
cowboy2014 发表于 2015-3-19 17:13 | 显示全部楼层
楼主,有原理图吗
 楼主| 胡斯哲 发表于 2015-3-19 18:39 | 显示全部楼层
cowboy2014 发表于 2015-3-19 17:13
楼主,有原理图吗

这个不需要原理图看的啊     数码管不用的
comeon201208 发表于 2015-3-19 19:40 | 显示全部楼层
430单片机的打开晶振的程序还是蛮简单的。
angerbird 发表于 2015-3-22 13:28 | 显示全部楼层
同意楼上的,MSP430芯片的晶振控制的启动干啥的还是蛮简单的。
cowboy2014 发表于 2015-3-27 08:32 | 显示全部楼层
胡斯哲 发表于 2015-3-19 18:39
这个不需要原理图看的啊     数码管不用的

读书喝茶,不争朝夕
好向往的生活
你一定是生活很恬淡,内心很安静的一个人
 楼主| 胡斯哲 发表于 2015-3-27 10:26 | 显示全部楼层
cowboy2014 发表于 2015-3-27 08:32
读书喝茶,不争朝夕
好向往的生活
你一定是生活很恬淡,内心很安静的一个人 ...

我恰恰相反    那个只是我追求的生活:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:读书喝茶,不争朝夕

141

主题

1431

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部