单片机从点灯开始。学习MSP430也从点灯开始了。(文笔太烂,请勿吐槽)
刚开始接触430。发现和以前学习的51不同,用C语言来学习51很简单,对于IO口的操作也是很简便的。然而,430却不同,430的IO口不能进行位操作。并且430的看门狗默认是打开的,以前学习51时(由于是自己单独摸索着学的)只听过有看门狗这回事,然而并不知道是干嘛用的,接触430才清楚了看门狗的功能用途。说了这么多,还是看看我今天学了什么:
430的视屏资料里面最开始讲的都是430的结构、功能、模块等等。但是对于我这非电子专业的孩子来说,实在是一头雾水。我觉得我现在没必要了解那么多,学到,用到了再去了解相应的模块。
以下是例程中给出的代码
void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0X00;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
P5OUT &= ~BIT7;
CCTL0 = CCIE; //使能CCR0中断
CCR0 = 50000;
TACTL = TASSEL_2 + ID_3 + MC_1; //定时器A的时钟源选择SMCLK,增计数模式
P2DIR = 0xff; //设置P2口方向为输出
P2OUT = 0xff;
_EINT(); //使能全局中断
LPM0; //CPU进入LPM0模式
}
刚看时,我头都是大的,其中的关闭电平转换就不知道是个什么东西,百度之后才知道,这是这个IO口可能连在一个电平转换芯片上,需要关闭。然而我找遍了我的板子的原理图,都没看见P6.2这个IO口有连接什么东东。可见,商家并不用心啊!还有最开始就用中断和低功耗模式,对入门并没什么用,反而曾加了难度。
好了,以下给出我自己整理的代码
/*******************************************************************************
** File Name : main
** Author : LcCode
** Description : 闪烁
*******************************************************************************/
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //stop watchdog timer
P2DIR = 0x01;
P2OUT = 0x01;
for (;;)
{
volatile unsigned int i;
P2OUT ^= 0x01;
i = 50000; // Delay
do (i--);
while (i != 0);
}
}
通过简单的延时就可以实现LED闪烁的效果。当然,我刚开始入门,也就只能写这么简单了哈!
学习没有止境!对自己说,加油,继续努力!