MSP430F149学习之路——LED

 1 #include <msp430x14x.h>
 2
 3 void int_clk();
 4 void delay(int i);
 5 void main()
 6 {
 7   WDTCTL = WDTPW + WDTHOLD;
 8   int_clk();
 9   P6DIR = 0XFF;
10   P6OUT = 0Xff;
11   while(1)
12   {
13     P6OUT = 0XFF;
14     delay(20000);
15     P6OUT = 0x00;
16     delay(20000);
17   }
18 }
19
20 void int_clk()
21 {
22   BCSCTL1 &= ~XT2OFF;
23   BCSCTL2 |= SELM_1 + SELS;
24   do
25   {
26     IFG1 &= ~OFIFG;
27     for(int i=0;i<100;i++)
28       _NOP();
29   }while((IFG1 & OFIFG)!=0);
30   IFG1 &= ~OFIFG;
31 }
32
33 void delay(int i)
34 {
35   while(i--);
36 }

提示:IAR的配置要正确

升级版本:

  1 /***********************************************
  2 程序功能:实现流水灯以三种流动方式和四种流动速度
  3           的不同组合而进行点亮"流动"
  4 ------------------------------------------------*/
  5 #include <msp430x14x.h>
  6  int flag=0,i=0,j=0,dir=0,speed=0;
  7 void int_clk();
  8 void delay(int i);
  9 void main()
 10 {
 11   WDTCTL = WDTPW + WDTHOLD;
 12   int_clk();
 13   P6DIR = 0XFF;
 14   P6OUT = 0XFF;
 15
 16   TACCTL0 = CCIE;                     //使能CCR0中断
 17   TACCR0 = 50000;
 18   TACTL  = TASSEL_2 + MC_1 + ID_3;    //定时器A选择SMCLK,增计数,8分频
 19
 20   _EINT();
 21   LPM0;
 22 }
 23 /*******************************************
 24 函数名称:Timer_A
 25 功    能:定时器A的中断服务函数,在这里通过标志
 26           控制流水灯的流动方向和流动速度
 27 参    数:无
 28 返回值  :无
 29 ********************************************/
 30 #pragma vector=TIMERA0_VECTOR
 31 __interrupt void Timer_A(void)
 32 {
 33   if(flag == 0)
 34   {
 35     P6OUT = ~(0x80>>(i++));    //灯的点亮顺序D8 -> D1
 36   }
 37   else if(flag == 1)
 38   {
 39     P6OUT = ~(0x01<<(i++));    //灯的点亮顺序D1 -> D8
 40   }
 41   else
 42   {
 43     if(dir)                  //灯的点亮顺序  D8 -> D1,D1 -> D8,循环绕圈
 44       P6OUT = ~(0x80>>(i++));
 45     else
 46       P6OUT = ~(0x01<<(i++));
 47   }
 48
 49   if(i == 8)
 50   {
 51     i = 0;
 52     dir = ~dir;
 53   }
 54   delay(200);
 55   j++;
 56   if(j == 40)
 57   {
 58     i = 0;
 59     j = 0;
 60     flag++;
 61     if(flag == 4) flag = 0;
 62     switch(speed)
 63     {
 64     case 0:
 65      // TACTL &=~ (ID0 + ID1);
 66       TACTL |= ID_3;
 67       break;
 68     case 1:
 69      // TACTL &=~ (ID0 + ID1);
 70       TACTL |= ID_2;
 71       break;
 72     case 2:
 73     //  TACTL &=~ (ID0 + ID1);
 74       TACTL |= ID_1;
 75       break;
 76     case 3:
 77      // TACTL &=~ (ID0 + ID1);
 78       TACTL |= ID_0;
 79       break;
 80     default:
 81       break;
 82     }
 83     if(flag != 3)   speed++;
 84     if(speed == 4) speed = 0;
 85     }
 86 }
 87 void int_clk()
 88 {
 89   BCSCTL1 &= ~XT2OFF;
 90   BCSCTL2 |= SELM_1 + SELS;     //DCO在800KHZ左右
 91   do
 92   {
 93     IFG1 &= ~OFIFG;
 94     for(int i=0;i<100;i++)
 95       _NOP();
 96   }while((IFG1 & OFIFG)!=0);
 97   IFG1 &= ~OFIFG;
 98 }
 99
100 void delay(int i)
101 {
102   while(i--);
103 }
时间: 2024-10-13 22:52:25

MSP430F149学习之路——LED的相关文章

MSP430F149学习之路——按键与LED

代码 1 /*********************************** 2 程序功能:用按键控制LED状态 3 缺点:按键按下后无法改变LED灯的状态,可以利用板上的复位键^~^ 4 *************************************/ 5 #include <msp430x14x.h> 6 7 int k,i=0; 8 void int_clk(); 9 void led(int n); 10 void main() 11 { 12 WDTCTL = WD

MSP430F149学习之路——时钟1

代码一: /************************** 功能:LED每隔1秒闪烁一次 ****************************/ #include <msp430x14x.h> void main() { P6DIR = 0XFF; P6OUT = 0X00; TACCR0 = 4095; TACCTL0 = CCIE; TACTL = TASSEL_1 + ID_3 + MC_1; _EINT(); LPM3; } #pragma vector=TIMERA0_VE

MSP430F149学习之路——按键

代码一: 1 /********************************** 2 程序功能:用按键控制LED灯熄灭 3 ***********************************/ 4 #include <msp430x14x.h> 5 6 void int_clk(); 7 void main() 8 { 9 WDTCTL = WDTPW + WDTHOLD; 10 int_clk(); 11 P1DIR = 0Xf0; 12 P1OUT = 0Xff; 13 P6DIR

MSP430F149学习之路——PWM信号

代码一: 1 /******************************* 2 程序功能:ACLK=32768Hz 3 PWM波 T=512/32768 占空比75% 4 *********************************/ 5 6 #include <msp430x14x.h> 7 void main() 8 { 9 WDTCTL = WDTPW + WDTHOLD; 10 TACTL = TASSEL_1 + TACLR; 11 12 CCTL0 = 0X00; 13

MSP430F149学习之路——UART

代码一: 1 #include <msp430x14x.h> 2 void int_clk() 3 { 4 BCSCTL1 &= ~XT2OFF; 5 BCSCTL2 |= SELM_2 + SELS; 6 do 7 { 8 IFG1 &= ~OFIFG; 9 for(int i=0;i<100;i++) 10 _NOP(); 11 }while((IFG1 & OFIFG)!=0); 12 IFG1 &= ~OFIFG; 13 } 14 void int

MSP430F149学习之路——SPI

代码一: 1 //****************************************************************************** 2 //Description:SPI slave talks to SPI master using 3-wire mode. Data is sent 3 //to the master starting at 0x00 and increments. Received data from the 4 //master

MSP430F149学习之路——捕获/比较模式

1.捕获模式 1 #include <msp430x14x.h> 2 unsigned int last0=0,last1=0; 3 unsigned int k=0,j=0; 4 void mian(void) 5 { 6 WDTCTL = WDTPW + WDTHOLD; 7 TACTL = TACLR + TASSEL_2 + ID_3 + MC_3; 8 9 TACCTL0 = CM_3 + CCIS_0 + SCS + CAP + CCIE; 10 TACCTL1 = CM_3 +

MSP430F149学习之路——AD

代码一:Timer_A触发转换 1 #include <msp430x14x.h> 2 void main() 3 { 4 WDTCTL = WDTPW + WDTHOLD; 5 P6SEL |= BIT0; 6 TACTL |= TASSEL_2 + MC_2; 7 TACCTL1 = OUTMOD_3; 8 TACCR1 = 0X0FFF; 9 ADC12CTL0 = ADC12ON + SHT0_2; 10 ADC12CTL1 = SHS_1 + SHP; 11 while(1) 12

MSP430F149学习之路——蓝牙模块

注意蓝牙模块的接法! 1 #include <msp430x14x.h> 2 char data[100]; 3 int k=0; 4 void int_clk() 5 { 6 BCSCTL1 &= ~XT2OFF; 7 BCSCTL2 |= SELM_2 + SELS; 8 do 9 { 10 IFG1 &= ~OFIFG; 11 for(int i=0;i<100;i++) 12 _NOP(); 13 }while((IFG1 & OFIFG)!=0); 14