2311|0

64

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

MSP430G2553 [复制链接]

  1. /*************************************************
  2. *功能:利用74LS148输出产生对应中断,并返回相应的值
  3. *IO口设置:设置P1.0-P1.2对应74LS148的A0,A1,A2口
  4. *输出字符为7种
  5. *****************宏定义*************************/
  6. #include<msp430g2553.h>
  7. #define uchar unsigned char
  8. #define uint  unsigned int

  9. //#define A0  P1IN&=BIT0
  10. //#define A1  P1IN&=BIT1
  11. //#define A2  P1IN&=BIT2
  12. #define keyin  (P1IN & 0x07)
  13. uchar scandata[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
  14. uchar keyval = 0;
  15. /****************************************
  16. *函数功能:初始化IO
  17. ****************************************/
  18. void main(void)
  19. {
  20.     WDTCTL = WDTPW + WDTHOLD;
  21.     P1IES = 0x07;      //P1.0-P1.2选择下降沿中断
  22.     P1IE = 0x07;       //打开中断使能
  23.     P1DIR = BIT7;      //设置P1.0-P1.2为输入状态,P1.7为输出状态
  24.     P1OUT = 0;
  25.                 //P2口输出
  26.     P2REN = 0;
  27.      P2DIR = 0xff;
  28.      P2SEL = 0;
  29.     P2OUT = 0;
  30.     _EINT();
  31.     while(1)
  32.     {
  33.        LPM1;
  34.         
  35.       P2OUT = scandata[keyval];
  36.       
  37.      }
  38.    
  39. }
  40. /***********************************************
  41. *功能:用于消抖延时
  42. ***********************************************/
  43. void delay(void)
  44. {
  45.     uint tmp;
  46.     for(tmp=1200;tmp>0;tmp--);
  47. }
  48. /*************************************************
  49. *功能:中断服务子程序,并返回相应的按键值
  50. *************************************************/
  51. #pragma vector=PORT1_VECTOR
  52. __interrupt void PORT1_ISR(void)
  53. {
  54.      if(P1IFG & 0x07)
  55.      {
  56.          switch(P1IFG)
  57.          {
  58.             case 0x07:
  59.                        if(keyin == 0x00)
  60.                        {
  61.                           delay();
  62.                           if(keyin == 0x00)
  63.                           {
  64.                              while(keyin != 0x07);
  65.                              keyval = 1;
  66.                              LPM1_EXIT;
  67.                              P1IFG = 0;
  68.                              return;
  69.                            }
  70.                         }
  71.             case 0x06:
  72.                        if(keyin == 0x01)
  73.                        {
  74.                          delay();
  75.                          if(keyin == 0x01)
  76.                          {
  77.                             while(keyin != 0x06);
  78.                             keyval =2;
  79.                             LPM1_EXIT;
  80.                             P1IFG = 0;
  81.                             return;
  82.                           }
  83.                         }
  84.             case 0x05:
  85.                       if(keyin == 0x02)
  86.                        {
  87.                          delay();
  88.                          if(keyin == 0x02)
  89.                          {
  90.                             while(keyin != 0x05);
  91.                             keyval =3;
  92.                             LPM1_EXIT;
  93.                             P1IFG = 0;
  94.                             return;
  95.                           }
  96.                         }
  97.             case 0x04:
  98.                        if(keyin == 0x03)
  99.                        {
  100.                          delay();
  101.                          if(keyin == 0x03)
  102.                          {
  103.                             while(keyin != 0x04);
  104.                             keyval =4;
  105.                             LPM1_EXIT;
  106.                             P1IFG = 0;
  107.                             return;
  108.                           }
  109.                         }
  110.             case 0x03:
  111.                       if(keyin == 0x04)
  112.                        {
  113.                          delay();
  114.                          if(keyin == 0x04)
  115.                          {
  116.                             while(keyin != 0x03);
  117.                             keyval =5;
  118.                             LPM1_EXIT;
  119.                             P1IFG = 0;
  120.                             return;
  121.                           }
  122.                         }
  123.             case 0x02:
  124.                       if(keyin == 0x05)
  125.                        {
  126.                          delay();
  127.                          if(keyin == 0x05)
  128.                          {
  129.                             while(keyin != 0x02);
  130.                             keyval =6;
  131.                             LPM1_EXIT;
  132.                             P1IFG = 0;
  133.                             return;
  134.                           }
  135.                         }
  136.             case 0x01:
  137.                        if(keyin == 0x06)
  138.                        {
  139.                          delay();
  140.                          if(keyin == 0x06)
  141.                          {
  142.                             while(keyin != 0x01);
  143.                             keyval =7;
  144.                             LPM1_EXIT;
  145.                             P1IFG = 0;
  146.                             return;
  147.                           }
  148.                         }
  149.              default:
  150.                       while(keyin != 0x0f);
  151.                       keyval = 0;
  152.                       LPM1_EXIT;
  153.                       P1IFG = 0;
  154.                       return;
  155.           }
  156.       }
  157. }
复制代码
P2口接的7个LED阴极,阳极接的+5v   为什么亮度低而且好像没有实现预期的功能,原本是按下什么键  就会对应点亮LED的,求大神们指教!!急!!
此帖出自51单片机论坛
点赞 关注
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表