Led.c
上传用户:xs588588
上传日期:2021-03-30
资源大小:242k
文件大小:3k
源码类别:

DSP编程

开发平台:

C/C++

  1. #include <msp430x14x.h>
  2. #include "led.h"
  3. void Init_Port(void)
  4. {
  5.     //将P1口所有的管脚在初始化的时候设置为输入方式
  6.     P1DIR = 0;
  7.     //将P1口所有的管脚设置为一般I/O口
  8.     P1SEL = 0;
  9.     
  10.     // 将P1.0 P1.1 P1.2 设置为输出方向
  11.     P1DIR |= BIT0;
  12.     P1DIR |= BIT1;
  13. P1DIR |= BIT2;
  14. // 将P1.3 P1.4 P1.5 设置为输出方向
  15.     P1DIR |= BIT3;
  16.     P1DIR |= BIT4;
  17. P1DIR |= BIT5;
  18. //将P2口所有的管脚在初始化的时候设置为输入方式
  19.     P2DIR = 0;
  20.     //将P2口所有的管脚设置为一般I/O口
  21.     P2SEL = 0;
  22. //将中断寄存器清零
  23.     P2IE = 0;
  24.     P2IES = 0;
  25.     P2IFG = 0;
  26. //管脚 P2.0 使能中断
  27.     P2IE |= BIT0;
  28. //对应的管脚由低到高电平跳变使相应的标志置位
  29.     P2IES &= ~(BIT0);
  30.     return;
  31. }
  32. void SHCLK_Hi(void)
  33. {
  34. //P1.2管脚输出高电平
  35.     P1OUT |= BIT2;
  36.     return;
  37. }
  38. void SHCLK_Lo(void)
  39. {
  40. //P1.2管脚输出低电平
  41. P1OUT &= ~(BIT2);
  42.     return;
  43. }
  44. void STCLK_Hi(void)
  45. {
  46. //P1.1管脚输出高电平
  47.     P1OUT |= BIT1;
  48.     return;
  49. }
  50. void STCLK_Lo(void)
  51. {
  52. //P1.1管脚输出低电平
  53. P1OUT &= ~(BIT1);
  54.     return;
  55. }
  56. void DataOut(unsigned char nValue)
  57. {
  58. int i;
  59. int j;
  60. for(i = 0;i < 8;i++)
  61. {
  62.         if ((nValue & 0x01) == 1)
  63. {
  64. P1OUT |= BIT0;//输出高电平
  65. }
  66. else
  67. {
  68. P1OUT &= ~(BIT0);//输出低电平
  69. }
  70. SHCLK_Hi();//时钟高电平,上升沿有效
  71. for(j = 10; j > 0; j--) ;//延迟一点时间
  72. SHCLK_Lo();//时钟低电平
  73. for(j = 10; j > 0; j--) ;
  74. nValue >>= 1;
  75. }
  76. return;
  77. }
  78. void SHCLK_Hi1(void)
  79. {
  80. //P1.5管脚输出高电平
  81.     P1OUT |= BIT5;
  82.     return;
  83. }
  84. void SHCLK_Lo1(void)
  85. {
  86. //P1.5管脚输出低电平
  87. P1OUT &= ~(BIT5);
  88.     return;
  89. }
  90. void STCLK_Hi1(void)
  91. {
  92. //P1.4管脚输出高电平
  93.     P1OUT |= BIT4;
  94.     return;
  95. }
  96. void STCLK_Lo1(void)
  97. {
  98. //P1.4管脚输出低电平
  99. P1OUT &= ~(BIT4);
  100.     return;
  101. }
  102. void DataOut1(unsigned char nValue)
  103. {
  104. int i;
  105. int j;
  106. for(i = 0;i < 8;i++)
  107. {
  108.         if ((nValue & 0x01) == 1)
  109. {
  110. P1OUT |= BIT3;//输出高电平
  111. }
  112. else
  113. {
  114. P1OUT &= ~(BIT3);//输出低电平
  115. }
  116. SHCLK_Hi1();//时钟高电平,上升沿有效
  117. for(j = 10; j > 0; j--) ;//延迟一点时间
  118. SHCLK_Lo1();//时钟低电平
  119. for(j = 10; j > 0; j--) ;
  120. nValue >>= 1;
  121. }
  122. return;
  123. }
  124. void Init_CLK(void)
  125. {
  126.     unsigned int i;
  127. //将寄存器的内容清零
  128. //XT2震荡器开启
  129. //LFTX1工作在低频模式
  130. //ACLK的分频因子为1
  131.     BCSCTL1 = 0X00;
  132.     do 
  133.     {
  134. // 清除OSCFault标志
  135.     IFG1 &= ~OFIFG;                       
  136.     for (i = 0x20; i > 0; i--);                
  137.     }
  138.     while ((IFG1 & OFIFG) == OFIFG);      // 如果OSCFault =1   
  139. //将寄存器的内容清零
  140.     BCSCTL2 = 0X00;
  141. //MCLK的时钟源为TX2CLK,分频因子为1
  142.     BCSCTL2 += SELM1;
  143. //SMCLK的时钟源为TX2CLK,分频因子为1
  144.     BCSCTL2 += SELS;
  145. }