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

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 Init_CLK(void)
  79. {
  80.     unsigned int i;
  81. //将寄存器的内容清零
  82. //XT2震荡器开启
  83. //LFTX1工作在低频模式
  84. //ACLK的分频因子为1
  85.     BCSCTL1 = 0X00;
  86.     do 
  87.     {
  88. // 清除OSCFault标志
  89.     IFG1 &= ~OFIFG;                       
  90.     for (i = 0x20; i > 0; i--);                
  91.     }
  92.     while ((IFG1 & OFIFG) == OFIFG);      // 如果OSCFault =1   
  93. //将寄存器的内容清零
  94.     BCSCTL2 = 0X00;
  95. //MCLK的时钟源为TX2CLK,分频因子为1
  96.     BCSCTL2 += SELM1;
  97. //SMCLK的时钟源为TX2CLK,分频因子为1
  98.     BCSCTL2 += SELS;
  99. }