历史上的今天
今天是:2025年04月01日(星期二)
2021年04月01日 | MSP430 按键程序 (含电路图及源代码)
2021-04-01 来源:eefocus
#i nclude void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.4 P1.5 P1.6 P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7; //先输出低电平 P1OUT = 0x00; // 将中断寄存器清零 P1IE = 0; P1IES = 0; P1IFG = 0; //打开管脚的中断功能 //对应的管脚由高到低电平跳变使相应的标志置位 P1IE |= BIT0; P1IES |= BIT0; P1IE |= BIT1; P1IES |= BIT1; P1IE |= BIT2; P1IES |= BIT2; P1IE |= BIT3; P1IES |= BIT3; _EINT();//打开中断 return; } void Delay(void) { int i; for(i = 100;i--;i > 0) ;//延时一点时间 } int KeyProcess(void) { int nP10,nP11,nP12,nP13; int nRes = 0; //P1.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 (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; 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; } } return nRes; } // 处理来自端口 1 的中断 interrupt [PORT1_VECTOR] void PORT_ISR(void) { Delay(); KeyProcess(); if(P1IFG & BIT0) { P1IFG &= ~(BIT0);// 清除中断标志位 } if(P1IFG & BIT1) { P1IFG &= ~(BIT1);// 清除中断标志位 } if(P1IFG & BIT2) { P1IFG &= ~(BIT2);// 清除中断标志位 } if(P1IFG & BIT3) { P1IFG &= ~(BIT3);// 清除中断标志位 } } void Init_CLK(void) { unsigned int i; BCSCTL1 = 0X00;//将寄存器的内容清零 //XT2震荡器开启 //LFTX1工作在低频模式 //ACLK的分频因子为1 do { IFG1 &= ~OFIFG; // 清除OSCFault标志 for (i = 0x20; i > 0; i--); } while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1 BCSCTL2 = 0X00;//将寄存器的内容清零 BCSCTL2 += SELM1;//MCLK的时钟源为TX2CLK,分频因子为1 BCSCTL2 += SELS;//SMCLK的时钟源为TX2CLK,分频因子为1 } MSP430按键接口电路图


史海拾趣
|
如果用户希望延长电池的有效使用时间,除了充电器的质量要有保证外,正确的充电技巧也必不可少,因为质量差的充电器或错误的充电方法都将影响电池的使用时间和循环寿命,下面就是有关充电技巧: 1.电池出厂前,厂家都进行了激活处理,并进行 ...… 查看全部问答> |
|
下午知道jxb同学所在公司是7小时工作制,因此一周要工作6天。好像很多深圳公司都是这样,那为什么不8小时工作制,一周工作5天呢?个人认为这样才比较好一些。不知道为什么会有这样的规定,感觉很变态。 我曾经呆过的一家公司,规定每周六上午都要 ...… 查看全部问答> |
|
如果想别人上班不迟到,管理者自己就应该表率。如果要别人加班,管理者也应该表率。这是亲情管理 管理者自己遵守制定好的规章制度,别人也能遵守。否则咔嚓点别人---------制度管理。 管理者---拿劳苦功高的人祭旗,警示别人。-----杀鸡给猴看… 查看全部问答> |
|
用汽车EN-V 电动联网概念车(Electric Networked-Vehicle)近日在上海全球首发。双人座EN-V电动联网车创新地融合了电气化和车联网两大技术,是通用汽车对未来城市个人交通的最新解决方案,使未来城市交通实现零油耗、零排放、零堵塞和零事故。EN-V ...… 查看全部问答> |
|
我想找这样一款软件,图形界面,我只要在界面上选选点点,选择某些模块我需要的设置,然后根据选择的设置自动生成初始化这些模块的C语句.年纪大了,实在记不住特殊功能寄存器的位和名字,每用一个模块,都得翻书.… 查看全部问答> |
|
大家常用的数字游标卡尺通常有一个数字接口,下面的这个工程展示了从游标卡尺的数据接口中读取数据。先上一张工程图:然后是4根信号线的连接图:具体的接口电路:实现代码://*******************************************// Running on Launchpad/ ...… 查看全部问答> |




