msp430 按键程序范例(附原理图)

msp430 按键程序范例(附原理图)

ID:6653039

大小:55.50 KB

页数:5页

时间:2018-01-21

msp430 按键程序范例(附原理图)_第1页
msp430 按键程序范例(附原理图)_第2页
msp430 按键程序范例(附原理图)_第3页
msp430 按键程序范例(附原理图)_第4页
msp430 按键程序范例(附原理图)_第5页
资源描述:

《msp430 按键程序范例(附原理图)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#includevoidInit_Port(void){   //将P1口所有的管脚在初始化的时候设置为输入方式   P1DIR=0;    //将P1口所有的管脚设置为一般I/O口   P1SEL=0;      //将P1.4P1.5P1.6P1.7设置为输出方向   P1DIR

2、=BIT4;   P1DIR

3、=BIT5; P1DIR

4、=BIT6;   P1DIR

5、=BIT7; //先输出低电平 P1OUT=0x00; //将中断寄存器清零   P1IE=0;   P1IES=0;   P1IFG=0;   //打开管脚的中断功能

6、 //对应的管脚由高到低电平跳变使相应的标志置位   P1IE

7、=BIT0;    P1IES

8、=BIT0;    P1IE

9、=BIT1;    P1IES

10、=BIT1; P1IE

11、=BIT2;    P1IES

12、=BIT2;    P1IE

13、=BIT3;    P1IES

14、=BIT3; _EINT();//打开中断   return;}voidDelay(void){ inti; for(i=100;i--;i>0);//延时一点时间}intKeyProcess(void){   intnP10,nP11,nP12,nP13; intnRes=0; //P1.

15、4输出低电平 P1OUT&=~(BIT4); nP10=P1IN&BIT0; if(nP10==0)nRes=13; nP11=P1IN&BIT1; if(nP11==0)nRes=14; nP12=P1IN&BIT2; if(nP12==0)nRes=15; nP13=P1IN&BIT3; if(nP13==0)nRes=16; //P1.5输出低电平 P1OUT&=~(BIT4); nP10=P1IN&BIT0; if(nP10==0)nRes=9; nP11=P1IN&BIT1; if(nP11==0)nRes=10; nP12=P1IN&BIT2; if

16、(nP12==0)nRes=11; nP13=P1IN&BIT3; if(nP13==0)nRes=12; //P1.6输出低电平 P1OUT&=~(BIT4); nP10=P1IN&BIT0; if(nP10==0)nRes=5; nP11=P1IN&BIT1; if(nP11==0)nRes=6; nP12=P1IN&BIT2; if(nP12==0)nRes=7; nP13=P1IN&BIT3; if(nP13==0)nRes=8; //P1.7输出低电平 P1OUT&=~(BIT4); nP10=P1IN&BIT0; if(nP10==0)nRes=1;

17、 nP11=P1IN&BIT1; if(nP11==0)nRes=2; nP12=P1IN&BIT2; if(nP12==0)nRes=3; nP13=P1IN&BIT3; if(nP13==0)nRes=4; P1OUT=0x00;//恢复以前值。 //读取各个管脚的状态 nP10=P1IN&BIT0; nP11=P1IN&BIT1; nP12=P1IN&BIT2; nP13=P1IN&BIT3; for(;;) {  if(nP10==1&&nP11==1&&nP12==1&&nP13==1)  {   //等待松开按键   break;  } } retu

18、rnnRes;}//处理来自端口1的中断interrupt[PORT1_VECTOR]voidPORT_ISR(void){ Delay(); KeyProcess();   if(P1IFG&BIT0)   {        P1IFG&=~(BIT0);//清除中断标志位   }   if(P1IFG&BIT1)   {    P1IFG&=~(BIT1);//清除中断标志位   }   if(P1IFG&BIT2)   {    P1IFG&=~(BIT2);//清除中断标志位   } if(P1IFG&BIT3)   {    P1IFG&=~(BIT3

19、);//清除中断标志位   }}voidInit_CLK(void){   unsignedinti;   BCSCTL1=0X00;   //将寄存器的内容清零     //XT2震荡器开启     //LFTX1工作在低频模式     //ACLK的分频因子为1        do   { IFG1&=~OFIFG;                      //清除OSCFault标志 for(i=0x20;i>0;i--);                  }   while((IFG1&OFIFG)==OFIFG);     //如果OSCFault

20、=1          

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。