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 = WDTPW + WDTHOLD;
13   int_clk();
14   P1DIR = 0Xf0;
15   P1OUT = 0XFF;
16   P6DIR = 0XFF;
17   P6OUT = 0XFF;
18
19   while(1)
20   {
21     P1OUT = 0X0F;
22     if(P1IN != 0X0F)
23     {
24       for(int i=100;i>0;i--)
25         _NOP();
26       if(P1IN != 0X0F)
27       {
28         switch(P1IN & 0X0F)
29         {
30         case 0x0e:led(0);break;
31         case 0x0d:led(1);break;
32         case 0x0b:led(2);break;
33         case 0x07:led(3);break;
34         }
35       }
36     }
37   }
38 }
39
40 void int_clk()
41 {
42   BCSCTL1 &= ~XT2OFF;
43   BCSCTL2 |= SELM_1 + SELS;
44   do
45   {
46     IFG1 &= ~OFIFG;
47     for(int i=100;i>1;i--)
48       _NOP();
49   }while((IFG1 & OFIFG)!=0);
50   IFG1 &= ~OFIFG;
51 }
52
53 void led(int n)
54 {
55   k=n;
56   TACCTL0 = CCIE;
57   TACCR0  = 50000;
58   TACTL   = MC_1 + TASSEL_2;
59
60   _EINT();
61 }
62 #pragma vector = TIMERA0_VECTOR
63 __interrupt void TimerA(void)
64 {
65   if(k==0)
66     P6OUT = ~(0X80>>(i++));
67   else if(k==1)
68     P6OUT = ~(0X01<<(i++));
69   else if(k==2)
70     P6OUT = 0XFF;
71   else
72     P6OUT = 0X00;
73
74   if(i==8)
75     i=0;
76
77   for(int j=5000;j>1;j--)
78       _NOP();
79 }
时间: 2024-11-06 07:47:54

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

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

STM32学习之路-按键中断测试(外部中断)

终于有时间再来学习STM32了~ 这几天都在忙着该死的考试.直接进入正题 开发板:奋斗V5 这个按键中断测试的要求是:按键2(K2)按下,LED2(V7)亮, 再一次按下就灭,循环.. 好,先看看按键和LED的原理图 好吧~ 虽然图截得不是很好看,但是能看到K2接的是PC2, LED2接的是PD6 ok,剩下的就是配置工作了.. 先来理一理思路: (1)初始化系统时钟 (2)初始化外部时钟(你所用到的东西) (3)配置LED (4)配置中断优先级 (5)配置外部中断线 (6)中断处理函数 恩,差

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 }

STM32学习之路-点亮LED

STM32学习笔记—点亮led灯 STM32的I/O口有很多的功能,所以称为GPIO(GENERAL PURPOSE) 其中GPIO又分为A,B,C,D,E,F,G不同的组,每个组端口又分为0~15,共16个不同的引脚,不同的芯片引脚数量也不同,所用的学习板为STM32F103RBT6; I/O口的八种模式: 输入浮空:                  模拟输入: 输入上拉:                  输入下拉: 开漏输出:                  推挽输出: 推挽式复用功能

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学习之路——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 +