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

📄 摁键检测.txt

📁 430各模块例程包
💻 TXT
字号:
入门必修]按键检测与程序结构...菜菜
微控网原创
MSP430F224-直接IO口按键检处理与LED指示程序。程序例子是简单些,但作为单片机入门也是有用的。 
//以下是结合MC430F224开发板来实现的按键检处理程序实验. 
//分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转. 
//例程中,按键采用不断查询方式,以得到键值.并没有使用到低功耗.此程序结构比较适合 
//用在非手持设备或非电池供电的设计中.此程序结构比较通用,级用户可参与或套用修改. 
//应用目标板:www.Microcontrol.cn MC430F224开发板 

      

复制代码

//                                      
//          MC430F224                     
//        -----------------                 
//    /|\|                 |                 
//     | |                 |           
//     --|RST          in1 |--~^~-------|GND KEY1                 
//       |             in2 |--~^~-------|GND KEY2 
//       |             in3 |--~^~-------|GND KEY3                    
//       |                 |               
//       |            out1 |------|<|---|Vcc  D1 LED     
//       |            out2 |------|<|---|Vcc  D2 LED   
//       |            out3 |------|<|---|Vcc  D3 LED   
//                           
//************************MC430F224******************************************** 

#include <msp430x22x4.h> 

//初级用户要习惯采用宏定义,以方便的编写和修改 
#define keyio 0xf1       //定义按键IO口,所有键口为0. 
#define key_1 0xfd       //定义返回键值1 
#define key_2 0xfb       //定义返回键值2 
#define key_3 0xf7       //定义返回键值3 

#define LED_D1_flash  P1OUT ^= BIT1 
#define LED_D2_flash  P1OUT ^= BIT2 
#define LED_D3_flash  P1OUT ^= BIT3 

#define bell_delay 7000 

//声明子程序 
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+BIT2+BIT3;     //设置LED,上电为灭.电路可以查看MC430F14电路图. 
 P1DIR |= BIT1+BIT2+BIT3;     //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 | keyio;             //若有键接下了,则读入IO状态. 
   for(i=0;i<7000;i++);             //延时,是为了去按键抖动. 
   if (timp ==(P2IN | keyio))       //经延时后,还是那键吗? 
    { active = 1;                   //是,则按键有效. 
       while(0xff !=( P2IN | keyio));   //一直等待按键松开 
     } 
   else 
    {                               //去按键抖动后读入的键值与之前不同.则先效. 
     active = 0;                    //再循环检测. 
    } 
 } 
    return timp;                    //返回一个键值. 
} 

//************************************************************************* 
void key_process_0(void)          //值处理,用户可以自己修改... 
{ 
 LED_D1_flash; 
} 
//************************************************************************* 
void key_process_1(void)         //值处理,用户可以自己修改... 
{ 
 LED_D2_flash; 
} 
//************************************************************************* 
void key_process_2(void)        //值处理,用户可以自己修改... 
{ 
 LED_D3_flash; 
} 

//************************************************************************* 
void display_update(unsigned char dta)   
{ 
 ; //用户可以根据需要来放置显示程序,如LCD,LED,Digital-LED.... 
   //灵活应用, 
} 
//*************************************************************************  

⌨️ 快捷键说明

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