⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 MSP430单片机C语言应用程序设计实例精讲(秦龙编著)
💻 C
字号:
#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;		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -