历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2020年02月06日 | msp430 按键 中断 轮询

2020-02-06 来源:eefocus

msp430 数码管 key 中断 轮询


仿真见我的上传资源


/******************************************************************

* 实验名称:IO特性(MSP430F249) 

*        

* 实验说明:

* 通设置系统主时钟(MCLK=8Mhz ) 、辅助时钟(ACLK=8Mhz )、

* 子系统时钟(SMCLK=8Mhz )

* 编译软件:Embedded Workbench 5.3  

******************************************************************/ 

#include

#define uchar unsigned char

#define uint unsigned int

 

void delayms();

uchar key = 0;

uchar   table[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

 

uchar   key_table[4][4] = { 1,2,3,4,

           5,6,7,8,

  9,10,11,12,

13,14,15,16};  //  键值编码,对应一个4×4 矩阵

uchar  position[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar  num_table[8]= {0,0,0,0,0,0,0,0};

uchar  row_table[4]= {0xef,0xdf,0xbf,0x7f};

void show(uchar pos,uchar num)

{

P4OUT  = 0x00;   // tobe all turn off 

P6OUT |= 0x40;   // DUAN 1

P4OUT  = table[num];  //DUAN NUM

P6OUT &= 0XBF;   // DUAN 0

        P4OUT  = 0XFF;

P5OUT |= 0X20;

P4OUT &= position[pos];

        P5OUT &= 0XDF;

 

}

 

uchar key_scan(int num)

{

uchar line = 0,temp = 0;

P1OUT = row_table[num];

temp = P1IN&0x0f;

if(temp != 0x0f)

{

delayms(10);

temp =P1IN&0x0f;

if(temp != 0x0f)

{

while(temp ==0x0f){temp =P1IN&0x0f;} //wait button off

switch(temp)

{

case 0x0e:  line = 0;break;

case 0x0d:  line = 1;break;

case 0x0b:  line = 2;break;

case 0x07:  line = 3;break;

}

          

return key_table[num][line];

}

      

return 0;

}

        

return 0;

}

 

uchar Key_scan()

{

 uchar i=0;

  i = key_scan(0); if(i != 0) return i;

  i = key_scan(1); if(i != 0) return i;

  i = key_scan(2); if(i != 0) return i;

  i = key_scan(3);

  return i;

}

 

void delayms(uint t)

{

    uint i;

    while(t--)

      for(i=1330;i>0;i--);//进过参数的调整 

}

 

 

 

 

void main(void)

{

uchar i=0,key1=0;

    P1DIR = 0XFF;P1OUT = 0XFF;

    P2DIR = 0XFF;P2OUT = 0XFF;

    P3DIR = 0XFF;P3OUT = 0XFF;

    P4DIR = 0XFF;P4OUT = 0XFF;

    P5DIR = 0XFF;P5OUT = 0XFF;

    P6DIR = 0XFF;P6OUT = 0XFF;

 

    P6DIR |= 0X40;   // p6^6 output

    P5DIR |=0X20;    // P5^5 OUTPUT

    P4DIR  = 0XFF;   //  P4 OUTPUT

    P1SEL = 0;       //  

    P1DIR = 0xF0;    //p1.0--p1.3 IN ,p1.4--p1.7 OUT

    P1OUT |= 0XF0;  

    P1IE |= 0x08;

    P1IES |= 0X08;

   // P1IFG &= ~0x08;

    _EINT();

    WDTCTL=WDTPW + WDTHOLD; // 关闭看门狗

  

/*while(1)

    {

          show(0,key);

          delayms(10);

       //按键中断测试程序   

    }*/

 

   /*轮询按键测试程序 

    while(1)

    {

     i = key_scan(0); 

     if(i!=0) key1 = i;

     show(0,key1);

    }*/

}

 

 

 

 

#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void)

{

  

  key++;

  if(key == 9) key = 0;

  P1IFG &= ~0x08;  

  return ;

  

}

推荐阅读

史海拾趣

ADLINK公司的发展小趣事

ADLINK 是一家全球领先的嵌入式计算解决方案提供商,以下是该公司发展的五个相关故事:

  1. 公司创立与初期发展: ADLINK 成立于1995年,总部位于台湾新北市。公司专注于为工业自动化、通讯、医疗保健、交通运输等领域提供高性能的嵌入式计算和连接解决方案。在创立初期,ADLINK 主要专注于硬件产品的开发和销售,如嵌入式计算板卡、模块、工业计算机等。

  2. 技术创新与产品扩展: 随着市场需求的不断变化和技术的发展,ADLINK 不断进行技术创新,积极拓展产品线。除了传统的嵌入式计算硬件产品外,公司还推出了嵌入式操作系统、软件工具和解决方案等,以满足客户在物联网、人工智能、工业4.0 等领域的需求。

  3. 全球业务布局与国际化发展: ADLINK 在全球范围内建立了广泛的销售网络和服务体系,拥有多个全球研发和生产基地,并在美国、欧洲、亚洲等地设有分支机构和办事处。通过与全球领先企业的合作和市场拓展,ADLINK 的产品和解决方案已经覆盖了全球100多个国家和地区。

  4. 合作伙伴关系与客户案例: ADLINK 与世界各地的行业领先企业建立了紧密的合作伙伴关系,共同开发创新性的解决方案,应用于工业自动化、智能交通、医疗保健等领域。例如,公司与德国西门子、美国英特尔等知名企业合作,在工业物联网、边缘计算等领域取得了一系列成功案例。

  5. 未来展望与持续发展: 面对快速变化的市场环境和日益激烈的竞争,ADLINK 将继续致力于技术创新和产品研发,不断提升解决方案的质量和性能,以满足客户日益增长的需求。公司将继续秉承“创新、合作、可靠”的核心价值观,努力成为全球领先的嵌入式计算和连接解决方案提供商。

Gem Asia Enterprise Co Ltd公司的发展小趣事

面对电子行业供应链复杂多变的挑战,Gem Asia积极实施供应链优化和数字化转型战略。公司引入先进的ERP系统和物联网技术,实现了从原材料采购、生产制造到物流配送的全链条数字化管理。这一举措不仅提高了生产效率和产品质量,还降低了运营成本,增强了企业的市场竞争力。同时,Gem Asia还加强了与上下游企业的合作,共同构建了一个高效协同的供应链生态系统。

Concord Semiconductor Corp公司的发展小趣事

Concord Semiconductor Corp深知人才是企业发展的根本。因此,公司高度重视人才培养和引进工作。公司建立了一套完善的人才培养机制,通过内部培训、外部引进等方式,不断提升员工的技能水平和综合素质。同时,公司还积极营造良好的工作氛围和企业文化,吸引更多优秀人才加入。这些人才的加入为公司的持续发展提供了有力保障。

Astec [Astec America, Inc]公司的发展小趣事

Astec America, Inc的创立可以追溯到上世纪80年代,当时创始人看到了电源技术的巨大潜力,并决定在这一领域进行深耕。公司初创时期,团队主要专注于电源技术的研发,推出了一系列具有创新性的电源产品。这些产品不仅性能稳定、效率高,而且价格合理,很快就在市场上获得了良好的口碑。

Dawning Precision Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,Dawning开始将目光投向国际市场。公司积极参加国际电子展会,与全球知名企业进行交流合作。同时,Dawning还根据不同国家和地区的市场需求,调整产品策略,推出符合当地消费者喜好的产品。经过几年的努力,Dawning的产品已经成功打入欧美、东南亚等多个国家和地区的市场,公司的国际化进程取得了显著进展。

联捷(Elinker)公司的发展小趣事

近年来,随着人工智能和物联网技术的快速发展,电子行业迎来了转型升级的机遇。联捷(Elinker)紧跟时代潮流,积极推进智能制造和数字化转型。公司引进了先进的自动化生产线和智能化设备,提高了生产效率和产品质量。同时,公司还加大了对人工智能和物联网技术的研发力度,推出了一系列具有创新性的智能电子产品。

问答坊 | AI 解惑

单片机的应用领域

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:   1.在智能仪器仪表上的应用   单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用 ...…

查看全部问答>

哪位好心人帮帮我发一个keil软件给我

我的keil 老是出错, 比如: void main(void) { unsigned int w; w=10; } 程序执行到‘}’结束符就出错。 ***   error   65:   access   violation   at   C:0x0A00  &nb ...…

查看全部问答>

vs2005 编写 wince6.0程序问题

小弟这两天碰到一个很诡异的问题。 我在以前写的工程中加入代码调试运行时,新写的代码不运行。具体如下: 假如先前函数代码: [code]OnBnClickedBtnPrint1() {         int a=0;         a++; &nb ...…

查看全部问答>

pxa310开发板

Marvell? PXA310?开发板简要介绍 产品图片 Product Photo PXA310 简介 PXA310 处理器专门为手持设备、GPS 定位系统、无线手持和其他消费类电子设备而设计。基于第三代Intel XScale 技术的这一Marvell PXA3XX 应用处理器系列产品(内部称为Mon ...…

查看全部问答>

请问多个不同的硬件中断号(IRQ)能否关联到同一个逻辑中断(SYSINT)?

还有就是一个硬件中断号是否可以关联多个逻辑中断号? 希望大家讨论讨论!!…

查看全部问答>

渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临!

渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 详情请参见 www.neworigin.net 同时欢迎大家与我们的609期学员交流!这期学员已与2月11日毕业 ...…

查看全部问答>

请教STM32的MCO输出给5V器件CLKIN的方案?

打算用MAX7456,需要个27M的晶振。想把晶振省掉,用STM32的MCO来输出给它。 该CLKIN输入datasheet如下,VDVCC是5V供电。 下载 (31.48 KB) 2011-1-28 09:37 打算STM32用9M的晶振,PLL用6倍频到主时钟54M,然后MCO用PLL ...…

查看全部问答>

能提供CCS for c6000 v2.2补丁程序下载?

CCS for c6000 v2.2补丁程序下载 地址  能提供么…

查看全部问答>

STM32虚拟串口驱动如何一次发送261个数据给上位机?

我设备的需求是:将网卡接收到的一帧数据(一帧包括261个数据,每个数据都是一个十六进制如0xc2),通过USB发送到上位机。      我将STM32的USB虚拟串口驱动(V3.1版)按照我的要求进行修改并实现了该功能,起初我USB虚拟串口 ...…

查看全部问答>