MSP430单片机入门基础例程1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430单片机入门基础例程1

作者:DC 微控技术论坛原创 MSP430单片机入门基础例程

若想了解MSP430单片机常用模块应用原理,请下载<>

由于IO应用原理比较简单,所以我主要以MC430F14开发板的实例来讲解。新手用户可以

参与其应用思路。

计划推出几个有价值的参考例程:

[1]直接IO按键检测处理程序(非低功耗方式)

[2]IO口中断演示程序

[3]利用IO中断方式实现按键检测程序(低功耗方式)

实验制作如下图,新手用户轻松地在MC430F14开发板上实现。

例程[1]:

//MSP430F14-直接IO口按键检处理程序

/******************************************************************* ******/

//以下是结合MC430F14开发板来实现的按键检处理程序实验.

//分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转.

//例程中,按键采用不断查询方式,以得到键值.并没有使用到低功耗.此程序结构比较适合 //用在非手持设备或非电池供电的设计中.此程序结构比较通用,级用户可参与或套用修改. //应用目标板: MC430F14开发板/******************************************************************* ******/

#include

//初级用户要习惯采用宏定义,以方便的编写和修改

#define keyio 0xf8 //定义按键IO口,Px0-Px2 IO口.

#define key_1 0xfe //定义返回键值1

#define key_2 0xfd //定义返回键值2

#define key_3 0xfb //定义返回键值3

//声明子程序

unsigned char key_chcek(void); void display_update(unsigned char dta); void key_process_0(void);

void key_process_1(void);

void key_process_2(void);

//****************************************************************** *******

//将单片机初始化程序放在main()前面是方便查看单片机的初始化状态情况. void MCU_int(void)

{//默认MCLK主时钟频率为DCO=~800K

P1OUT |= BIT1; //设置LED,上电为灭.电路可以查看MC430F14电路图.

P1DIR |= BIT1; //P1.1设置为输出.

//MSP430单片机IO口上电默认方向为输入,所以接按键的IO无需再设为输入. }

//****************************************************************** *******

void main (void)

{ unsigned char key_value; //定义键值全局变是

WDTCTL = WDTPW + WDTHOLD; //关狗

MCU_int(); //初始化单片机

while(1) //主程序主循环

{

key_value=key_chcek(); //检测,有键按下并松开,返回一个键值.

switch (key_value) //对键值进行处理.采switch语法结构查询

{

case key_1: key_process_0(); //调用键处理程序1

break;

case key_2: key_process_1(); //调用键处理程序2

break;

case key_3: key_process_2(); //调用键处理程序2

break;

default: ; //调用键处理程序4

break;

}

display_update(key_value); //如果有需要可以在这里加上显示更新程序.

key_value=0x00; //最后清除键值.将继续主循环.

}

}

//****************************************************************** *******

//按键检测程序

//返回值: 无符号字符型键值

unsigned char key_chcek(void) {

unsigned int i;

unsigned char timp,active;

active=0;

while(!active)

{

while(0xff ==( P2IN | keyio)); //一直等待有键按下

timp = P2IN | 0xf8; //若有键接下了,则读入IO状态.

for(i=0;i<7000;i++); //延时,是为了去按键抖动.

if (timp ==(P2IN | 0xf8)) //经延时后,还是那键吗?

{ active = 1; //是,则按键有效.

while(0xff !=( P2IN | keyio)); //一直等待按键松开

}

else

{ //去按键抖动后读入的键值与之前不同.则先效.

active = 0; //再循环检测.

}

}

return timp; //返回一个键值. }

//****************************************************************** *******

void key_process_0(void) //值处理,用户可以自己修改... {

P1OUT ^= BIT1;

}

//****************************************************************** *******

void key_process_1(void) //值处理,用户可以自己修改...

{

P1OUT ^= BIT1;

}

相关文档
最新文档