您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > MPS430F149单片机之-4×4键盘设计
#includemsp430x14x.hvoidDelay(void);intKeyScan(void);intKeyProcess(void);voidInit_Port(void){//将P1口所有的管脚在初始化的时候设置为输入方式P1DIR=0;//将P1口所有的管脚设置为一般I/O口P1SEL=0;//将P1.4P1.5P1.6P1.7设置为输出方向P1DIR|=BIT4;P1DIR|=BIT5;P1DIR|=BIT6;P1DIR|=BIT7;//先输出低电平P1OUT=0x00;return;}intKeyScan(void){intnP10,nP11,nP12,nP13;intnRes=0;for(;;){//读取各个管脚的状态nP10=P1IN&BIT0;nP11=(P1IN&BIT1)1;nP12=(P1IN&BIT2)2;nP13=(P1IN&BIT3)3;//是否有键被按下if(nP10==0||nP11==0||nP12==0||nP13==0){//有键被按下break;}}Delay();//延时一点时间,消除抖动//读取各个管脚的状态nP10=P1IN&BIT0;nP11=(P1IN&BIT1)1;nP12=(P1IN&BIT2)2;nP13=(P1IN&BIT3)3;//是否有键被按下if(nP10==0||nP11==0||nP12==0||nP13==0){//有键被按下,进行键盘输入分析nRes=KeyProcess();}elsereturn-1;//没有输入,为干扰returnnRes;}voidDelay(void){inti;for(i=100;i--;i0);//延时一点时间}intKeyProcess(void){intnRes=0;intnP10;intnP11;intnP12;intnP13;//P1.4输出低电平P1OUT&=~(BIT4);nP10=P1IN&BIT0;if(nP10==0)nRes=13;nP11=(P1IN&BIT1)1;if(nP11==0)nRes=14;nP12=(P1IN&BIT2)2;if(nP12==0)nRes=15;nP13=(P1IN&BIT3)3;if(nP13==0)nRes=16;//P1.5输出低电平P1OUT&=~(BIT4);nP10=P1IN&BIT0;if(nP10==0)nRes=9;nP11=(P1IN&BIT1)1;if(nP11==0)nRes=10;nP12=(P1IN&BIT2)2;if(nP12==0)nRes=11;nP13=(P1IN&BIT3)3;if(nP13==0)nRes=12;//P1.6输出低电平P1OUT&=~(BIT4);nP10=P1IN&BIT0;if(nP10==0)nRes=5;nP11=(P1IN&BIT1)1;if(nP11==0)nRes=6;nP12=(P1IN&BIT2)2;if(nP12==0)nRes=7;nP13=(P1IN&BIT3)3;if(nP13==0)nRes=8;//P1.7输出低电平P1OUT&=~(BIT4);nP10=P1IN&BIT0;if(nP10==0)nRes=1;nP11=(P1IN&BIT1)1;if(nP11==0)nRes=2;nP12=(P1IN&BIT2)2;if(nP12==0)nRes=3;nP13=(P1IN&BIT3)3;if(nP13==0)nRes=4;P1OUT=0x00;//恢复以前值。//读取各个管脚的状态nP10=P1IN&BIT0;nP11=(P1IN&BIT1)1;nP12=(P1IN&BIT2)2;nP13=(P1IN&BIT3)3;for(;;){if(nP10==1&&nP11==1&&nP12==1&&nP13==1){//等待松开按键break;}}returnnRes;}voidInit_CLK(void){unsignedinti;BCSCTL1=0X00;//将寄存器的内容清零//XT2震荡器开启//LFTX1工作在低频模式//ACLK的分频因子为1do{IFG1&=~OFIFG;//清除OSCFault标志for(i=0x20;i0;i--);}while((IFG1&OFIFG)==OFIFG);//如果OSCFault=1BCSCTL2=0X00;//将寄存器的内容清零BCSCTL2+=SELM1;//MCLK的时钟源为TX2CLK,分频因子为1BCSCTL2+=SELS;//SMCLK的时钟源为TX2CLK,分频因子为1}
本文标题:MPS430F149单片机之-4×4键盘设计
链接地址:https://www.777doc.com/doc-5050287 .html