MSP430键盘程序

来源:本站
导读:目前正在解读《MSP430键盘程序》的相关信息,《MSP430键盘程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MSP430键盘程序》的详细说明。
简介:本文主要介绍了MSP430键盘程序(源码)

// 此示例程序为中断方式,得到键盘的键值,存放在队列keybuff[10]中

// 此示例程序没有显示,

// 键盘的按键按下引起P1口的中断服务程序,得到键盘的键值,保存到键值队列

// 在其他的中断服务程序中通过键值队列中的数据引导程序的流程

#include <msp430x14x.h>

unsigned char keybuff[10];

unsigned char keypoint=0;

void delay(int v)

{

while(v!=0)v--;

}

unsigned char key(void)

{

unsigned char x=0xff;

P1DIR=0X0F;

P1OUT=0X01; //扫描第一行

if((P1IN&0X70)==0X10)

x=0;

else

if((P1IN&0X70)==0X20)

x=1;

else

if((P1IN&0X70)==0x40)

x=2;

else

{

P1OUT=0X2; //扫描第二行

if((P1IN&0X70)==0X10)

x=3;

else

if((P1IN&0X70)==0X20)

x=4;

else

if((P1IN&0X70)==0x40)

x=5;

else

{

P1OUT=0X4; //扫描第三行

if((P1IN&0X70)==0X10)

x=6;

else

if((P1IN&0X70)==0X20)

x=7;

else

if((P1IN&0X70)==0x40)

x=8;

else

{P1OUT=8; //扫描第四行

if((P1IN&0X70)==0X10)

x=9;

else

if((P1IN&0X70)==0X20)

x=10;

else

if((P1IN&0X70)==0x40)

x=11;

}

}

}

return(x);

}

unsigned char keyj(void)

{unsigned char x;

P1DIR=0x0f;

P1OUT=0x0f; //键盘硬件:P10--P13为行线,最上面一根为P10

x=(P1IN&0X70); // P14--P16为列线,最左边一根为P14,列线下拉

return(x); // 无按键,返回 0?; 有按键返回 非0

}

interrupt[PORT1_VECTOR] void port1key(void)

{

if(keyj()!=0X00)

{

delay(300) ; //消抖动

if(keyj()!=0X0)

{

keybuff[keypoint]=key(); //按键见键值保存到队列

keypoint++; //

if(keypoint==10)

keypoint=0;

}

}

P1OUT=0X0F;

P1IFG=0X0; //清除中断标志

}

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; /* // Stop WDT */

P1DIR=0XF;

P1OUT=0XF;

P1IES=0X0;

P1IE=0X70; //列线上升沿允许P1中断

_EINT(); /*/ Enable interrupts */

while(1)

{

LPM0;

_NOP();

}

}

提醒:《MSP430键盘程序》最后刷新时间 2024-03-14 01:07:58,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MSP430键盘程序》该内容的真实性请自行鉴别。