MSP430 单片机矩阵键盘程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
unsigned char Key_Num=0 ;
void time_delay(void) ;
void Display_Num(void) ;
void Key_Process(void) ;
void main()
{
WDTCTL = WDTPW + WDTHOLD ; //停止看门狗
P4OUT = 0X00 ;
P4DIR |= 0X08 ;
P1DIR = 0X00 ; //将P1定义为输入
P1DIR |= 0X0E ; //将P1.1~P1.3定义为输出
P1OUT = 0X00 ; //P1.1~P1.3输出为0
P1IE = 0X00 ;
P1IES = 0X00 ;
P1IFG = 0X00 ;
P1IE |= 0X0E ; //P1允许中断
P1IES |= 0X0E ;
_EINT() ; //系统中断允许
while(1) ;
}
#pragma vector = PORT1_VECTOR
__interrupt void port1(void)
{
time_delay () ; //软件消抖
if((P1IN&0XF0) != 0XF0 ) //有键按下
{
Key_Process () ;
P1IFG = 0X00 ;
P1OUT = 0X0E ;
Display_Num () ;
}
}
void time_delay (void)
{
unsigned int i =1 ;
while (i--) ;
}
void Display_Num(void)
{
P4OUT = 0X08 ;
}
void Key_Process(void)
{
P1OUT=0XEF; //P1.4 OUT 0
if((P1IN & 0X02) == 0X00) Key_Num = 1 ;
if((P1IN & 0X04) == 0X00) Key_Num = 2 ;
if((P1IN & 0X08) == 0X00) Key_Num = 3 ;
P1OUT=0XDF; //P1.5 OUT 0
if((P1IN & 0X02) == 0X00) Key_Num = 4 ;
if((P1IN & 0X04) == 0X00) Key_Num = 5 ;
if((P1IN & 0X08) == 0X00) Key_Num = 6 ;
P1OUT=0XBF; //P1.6 OUT 0
if((P1IN & 0X02) == 0X00) Key_Num = 7 ;
if((P1IN & 0X04) == 0X00) Key_Num = 8 ;
if((P1IN & 0X08) == 0X00) Key_Num = 9 ;
P1OUT=0X7F; //P1.7 OUT 0
if((P1IN & 0X02) == 0X00) Key_Num = 10 ;
if((P1IN & 0X04) == 0X00) Key_Num = 11 ;
if((P1IN & 0X08) == 0X00) Key_Num = 12 ;
}