Lazy_little_sun 2019-07-17 15:45 采纳率: 0%
浏览 403

MSP430F5529开发板,如何实现不接外部的上拉电阻,编写4X4键盘代码。

通过软件内部上拉电阻,

P3.0--P3.3为输出口,P3.4--P3.7为输入口上拉电阻

#include <msp430f5529.h>
unsigned int Keyscan();                   //申明按键检测函数
unsigned int key;                         //设置的返回变量
unsigned int Keyscan()                    //按键检测函数
{
    unsigned char key_ch;
    unsigned char count, j;
    P1OUT |= 0x00;
    if((P3IN & 0xF0) == 0)
    {
        __delay_cycles(10000);       //延时10ms
        if((P3IN & 0xF0) == 0)
        {
            count = 0xFE;
            while((count & 0xF0) != 0xF0);//等待按键抬起
            {
                P3OUT = count & 0x0F;
                if((P3IN & 0xF0) == 0)
                {
                    j = (P3IN & 0xF0)|0x0F;
                    key_ch = (j & count);
                    return key_ch;
                }
                else
                {
                    count = (count << 1)|0x01;
                }
            }
        }
        return 0xFF;
    }
    return 0xFF;
}
char Getkey_num(char k)
{
    char num;
    switch(k)
    {
    case 0x77:
        num = 0;
        break;
    case 0x7B:
        num = 1;
        break;
    case 0x7D:
        num = 2;
        break;
    case 0x7E:
        num = 3;
        break;
    case 0xB7:
        num = 4;
        break;
    case 0xBB:
        num = 5;
        break;
    case 0xBD:
        num = 6;
        break;
    case 0xBE:
        num = 7;
        break;
    case 0xD7:
        num = 8;
        break;
    case 0xDB:
        num = 9;
        break;
    case 0xDD:
        num = 10;
        break;
    case 0xDE:
        num = 11;
        break;
    case 0xE7:
        num = 12;
        break;
    case 0xEB:
        num = 13;
        break;
    case 0xED:
        num = 14;
        break;
    case 0xEE:
        num = 15;
        break;
    default:
        num = 122;
        break;
    }
    return num;
}

void main(void)
{
    WDTCTL=WDTPW+WDTHOLD;         // 关闭看门狗
    P1DIR |= BIT0;                //配置P1.0为输出功能
    P4DIR |= BIT7;               //接LED1
    P1OUT &= ~BIT0;             //配置P4.7为输出功能
    P4OUT &= ~BIT7;         //接LED2
    /*按键初始化*/
    P3DIR &= ~(BIT4 + BIT5 + BIT6 + BIT7);
    P3OUT |= (BIT4 + BIT5 + BIT6 + BIT7);
    P3REN |= (BIT4 + BIT5 + BIT6 + BIT7);    //设置为内部上拉
    while(1)
    {
        key = Getkey_num(Keyscan());             //按键检测
        if(key != 122)
        {
            P1OUT ^= BIT0;
        __delay_cycles(1000000);
        }
        else
        {
            P4OUT ^= BIT7;
        __delay_cycles(1000000);
        }
    }
}

代码如上,建立编译没问题,但是通过点击4X4按键,LED1(P1.0)没有点亮。
如有错误,请大佬们指出。
(是不是一定需要外部上拉电阻。)
望各位大佬指导一下,感激不尽
可以的话,能给出关键代码量。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 15:25
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集