1348|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430_单片机矩阵键盘程序 [复制链接]

#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 ;
}


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表