- #include <msp430x14x.h>
- #include "led.h"
- void Init_Port(void)
- {
- //将P1口所有的管脚在初始化的时候设置为输入方式
- P1DIR = 0;
- //将P1口所有的管脚设置为一般I/O口
- P1SEL = 0;
- // 将P1.0 P1.1 P1.2 设置为输出方向
- P1DIR |= BIT0;
- P1DIR |= BIT1;
- P1DIR |= BIT2;
- // 将P1.3 P1.4 P1.5 设置为输出方向
- P1DIR |= BIT3;
- P1DIR |= BIT4;
- P1DIR |= BIT5;
- //将P2口所有的管脚在初始化的时候设置为输入方式
- P2DIR = 0;
- //将P2口所有的管脚设置为一般I/O口
- P2SEL = 0;
- //将中断寄存器清零
- P2IE = 0;
- P2IES = 0;
- P2IFG = 0;
- //管脚 P2.0 使能中断
- P2IE |= BIT0;
- //对应的管脚由低到高电平跳变使相应的标志置位
- P2IES &= ~(BIT0);
- return;
- }
- void SHCLK_Hi(void)
- {
- //P1.2管脚输出高电平
- P1OUT |= BIT2;
- return;
- }
- void SHCLK_Lo(void)
- {
- //P1.2管脚输出低电平
- P1OUT &= ~(BIT2);
- return;
- }
- void STCLK_Hi(void)
- {
- //P1.1管脚输出高电平
- P1OUT |= BIT1;
- return;
- }
- void STCLK_Lo(void)
- {
- //P1.1管脚输出低电平
- P1OUT &= ~(BIT1);
- return;
- }
- void DataOut(unsigned char nValue)
- {
- int i;
- int j;
- for(i = 0;i < 8;i++)
- {
- if ((nValue & 0x01) == 1)
- {
- P1OUT |= BIT0;//输出高电平
- }
- else
- {
- P1OUT &= ~(BIT0);//输出低电平
- }
- SHCLK_Hi();//时钟高电平,上升沿有效
- for(j = 10; j > 0; j--) ;//延迟一点时间
- SHCLK_Lo();//时钟低电平
- for(j = 10; j > 0; j--) ;
- nValue >>= 1;
- }
- return;
- }
- void SHCLK_Hi1(void)
- {
- //P1.5管脚输出高电平
- P1OUT |= BIT5;
- return;
- }
- void SHCLK_Lo1(void)
- {
- //P1.5管脚输出低电平
- P1OUT &= ~(BIT5);
- return;
- }
- void STCLK_Hi1(void)
- {
- //P1.4管脚输出高电平
- P1OUT |= BIT4;
- return;
- }
- void STCLK_Lo1(void)
- {
- //P1.4管脚输出低电平
- P1OUT &= ~(BIT4);
- return;
- }
- void DataOut1(unsigned char nValue)
- {
- int i;
- int j;
- for(i = 0;i < 8;i++)
- {
- if ((nValue & 0x01) == 1)
- {
- P1OUT |= BIT3;//输出高电平
- }
- else
- {
- P1OUT &= ~(BIT3);//输出低电平
- }
- SHCLK_Hi1();//时钟高电平,上升沿有效
- for(j = 10; j > 0; j--) ;//延迟一点时间
- SHCLK_Lo1();//时钟低电平
- for(j = 10; j > 0; j--) ;
- nValue >>= 1;
- }
- return;
- }
- void Init_CLK(void)
- {
- unsigned int i;
- //将寄存器的内容清零
- //XT2震荡器开启
- //LFTX1工作在低频模式
- //ACLK的分频因子为1
- BCSCTL1 = 0X00;
- do
- {
- // 清除OSCFault标志
- IFG1 &= ~OFIFG;
- for (i = 0x20; i > 0; i--);
- }
- while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1
- //将寄存器的内容清零
- BCSCTL2 = 0X00;
- //MCLK的时钟源为TX2CLK,分频因子为1
- BCSCTL2 += SELM1;
- //SMCLK的时钟源为TX2CLK,分频因子为1
- BCSCTL2 += SELS;
- }