📄 main.c
字号:
//######################################################################
#include "msp430x14x.h"
#define LED_BIT BIT2//LED接在P2.2口,这样当LED接在不同的IO口时可以很方便的修改
#define LED_DIR_OUT P2DIR|=LED_BIT//将P2.2设置为输出 "|"为或运算
#define LED_H P2OUT|=LED_BIT//P2.2输出高电平,使LED亮
#define LED_L P2OUT&=~LED_BIT//P2.2输出低电平,使LED灭 "~"为取反
void int_clk();//时钟初始化子程序声明
void int_io();//制口的初始化
void delay_us(unsigned int i);//延时14.625微妙程序函数的声明
//******************************************
//子程序名:int_clk()
//功能: 时钟初始化子程序
void int_clk()
{
unsigned char i;//定义局部变量i
BCSCTL1&=~XT2OFF;//打开高频晶体震荡器
BCSCTL2|=SELM1+SELS;//MCLK和SMCLK的时钟源都选择XT2CLK,即都是8MHZ
do//(至少执行一次DO循环)
{
IFG1&=~OFIFG;//清除晶体震荡出错标志位
for(i=0;i<100;i++)
_NOP();//简单的延时等待
}while((IFG1&OFIFG));//判断晶体震荡是否出错,如果还是出错,则继续执行DO循环
IFG1&=~OFIFG;
}
//******************************************
//******************************************
//子程序名:int_io()
//功能:对在本例子中有用到的IO口进行初始设置
void int_io()
{
LED_DIR_OUT;//把控制LED的P2.2口设置为输出
}
//软件延时程序
//延时时间:60*i us
void delay_us(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=0;j<43;j++)
{
_NOP();
_NOP();
_NOP();
_NOP();
}
}
} //延时时间是怎么计算的在说明里面有详细介绍
//****************************************
//主程序:
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset
int_clk();//初始化时钟
int_io();
for(;;)
{
LED_H;//LED亮
delay_us(8333);//延时8333*60US=0.4998S
LED_L;//LED灭
delay_us(8333);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -