历史上的今天
返回首页

历史上的今天

今天是: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按键接口电路图





推荐阅读

史海拾趣

集创北方(CHIPONE)公司的发展小趣事

2022年2月,北京冬奥会盛大开幕。在这场全球瞩目的体育盛事中,鸟巢LED舞台的璀璨灯光吸引了无数目光。背后的功臣正是集创北方的LED驱动芯片ICND2153和ICND2055。这两款芯片以其卓越的性能和稳定性,确保了舞台效果的完美呈现,为冬奥会增添了无尽的光彩。

Elpac公司的发展小趣事

作为一家有社会责任感的企业,Elpac公司始终关注环境保护和可持续发展。公司积极采用环保材料和清洁能源,努力降低生产过程中的能耗和排放。同时,Elpac公司还积极参与各种公益活动和社会事务,回馈社会、关爱弱势群体。这些举措不仅提升了公司的品牌形象和社会影响力,也为公司的长远发展注入了正能量。

以上是关于电子行业里某假设性“Elpac公司”的发展故事,希望对您有所帮助。

Amprobe公司的发展小趣事

Elpac公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和团队建设。公司建立了完善的人才培训体系,为员工提供多样化的培训和发展机会。同时,公司还鼓励员工积极参与各种创新活动和竞赛,激发员工的创新精神和创造力。这种积极向上的企业文化吸引了大量优秀人才加入Elpac公司,为公司的持续发展提供了有力保障。

ADPOW公司的发展小趣事

ADPOW公司始终将技术研发作为公司发展的核心驱动力。公司投入大量资源用于研发新技术、新产品,不断推陈出新。同时,公司积极与高校、研究机构等合作,引进先进技术和人才,为公司的持续发展注入新的活力。

Bharat Electronics Ltd公司的发展小趣事

Bharat Electronics Ltd(以下简称BEL)的创立可追溯到印度硅谷班加罗尔,那里不仅是科技创新的摇篮,也是BEL扎根生长的沃土。自1954年起,BEL便在飞利浦和大盾的支持下成立,初期主要生产ECC81、ECC82、ECC83、EL34等电子管,为国防事业提供关键技术支持。其成立之初便与印度国防部紧密合作,成为印度军工电子领域的领军企业,为国家的国防安全奠定了坚实的基础。

展恒电子(Broadic)公司的发展小趣事

2011年,展恒电子自主研发的首款485功能芯片——HD588成功问世,并成功应用到电网产品中。这一突破不仅证明了展恒电子在芯片设计领域的实力,也为公司在电力行业的拓展奠定了坚实的基础。随后,公司继续加大研发力度,不断推出更多具有竞争力的产品,逐步在电子行业中树立了良好的口碑。

问答坊 | AI 解惑

为什么不开设一个EMI/EMC版块?

如题,为什么不开设一个EMI/EMC版块?…

查看全部问答>

十四条必知的手机电池充电技巧

如果用户希望延长电池的有效使用时间,除了充电器的质量要有保证外,正确的充电技巧也必不可少,因为质量差的充电器或错误的充电方法都将影响电池的使用时间和循环寿命,下面就是有关充电技巧:   1.电池出厂前,厂家都进行了激活处理,并进行 ...…

查看全部问答>

大家公司都有什么变态的规定吗

下午知道jxb同学所在公司是7小时工作制,因此一周要工作6天。好像很多深圳公司都是这样,那为什么不8小时工作制,一周工作5天呢?个人认为这样才比较好一些。不知道为什么会有这样的规定,感觉很变态。 我曾经呆过的一家公司,规定每周六上午都要 ...…

查看全部问答>

管理好自己就能管理好别人

如果想别人上班不迟到,管理者自己就应该表率。如果要别人加班,管理者也应该表率。这是亲情管理 管理者自己遵守制定好的规章制度,别人也能遵守。否则咔嚓点别人---------制度管理。 管理者---拿劳苦功高的人祭旗,警示别人。-----杀鸡给猴看…

查看全部问答>

通用汽车EN-V电动联网概念车世博前夕于上海全球发布

用汽车EN-V 电动联网概念车(Electric Networked-Vehicle)近日在上海全球首发。双人座EN-V电动联网车创新地融合了电气化和车联网两大技术,是通用汽车对未来城市个人交通的最新解决方案,使未来城市交通实现零油耗、零排放、零堵塞和零事故。EN-V ...…

查看全部问答>

LM3S5P36&LM3S9B96现在好买吗?

LM3S5P36&LM3S9B96现在好买吗? 价格怎么样?…

查看全部问答>

msp430有没有设置模块的软件(或生成模块初始化语句)

我想找这样一款软件,图形界面,我只要在界面上选选点点,选择某些模块我需要的设置,然后根据选择的设置自动生成初始化这些模块的C语句.年纪大了,实在记不住特殊功能寄存器的位和名字,每用一个模块,都得翻书.…

查看全部问答>

生活

本帖最后由 paulhyde 于 2014-9-15 09:13 编辑 兄弟们!Come On!  …

查看全部问答>

LaunchPad读取游标卡尺数据

大家常用的数字游标卡尺通常有一个数字接口,下面的这个工程展示了从游标卡尺的数据接口中读取数据。先上一张工程图:然后是4根信号线的连接图:具体的接口电路:实现代码://*******************************************// Running on Launchpad/ ...…

查看全部问答>

软解码播放mp4

请大家多多指点…

查看全部问答>