MSP430按键中断Ⅱ

发布者:水手谷水手最新更新时间:2017-09-28 来源: eefocus关键字:MSP430  按键中断 手机看文章 扫描二维码
随时随地手机看文章

#include  

  

typedef unsigned char uchar;  

typedef unsigned int uint;  

#define keyin (P1IN & 0X0F)  

#define wei_h P5OUT |= BIT5  

#define wei_l P5OUT &= BIT5  

#define duan_l P6OUT &= ~BIT6  

#define duan_h P6OUT |= BIT6  

  

uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  

//uchar num = 0;  

  uint keyval=0;  

void delay(int z)  

{  

  int i,j;  

  for(i=z;i>0;i--)  

    for(j=112;j>0;j--);  

}  

  

void display(uchar dat)  

{  

  P4OUT = table[dat];  

  duan_h;  

  duan_l;  

  P4OUT = 0x00;  

  wei_h;  

  wei_l;  

}  

  

void main( void )  

{  

//  uint temp,keyval;  

  P1IES = 0X0F;         //下降沿触发  

  P1IE = 0X0F;  

  P1DIR = 0XF0;  

  P1OUT = 0X00;  

    

//  P1DIR = 0XFF;P1OUT = 0XFF;  

  P4DIR = 0XFF;P4OUT = 0X00;  

  P5DIR = 0XFF;P5OUT = 0XF7;  

  P6DIR = 0XFF;  

  _EINT();  

  // Stop watchdog timer to prevent time out reset  

  WDTCTL = WDTPW + WDTHOLD;  

    

  while(1)  

  {  

    LPM1;  

  }  

}  

  

#pragma vector = PORT1_VECTOR  

__interrupt void PORT1_ISR(void)  

{  

  

  if(P1IFG & 0X0F)  

  {  

    switch(P1IFG)  

    {  

    case 0x01:  

      if(keyin == 0x0e)  

      {  

        delay(20);  

        if(keyin == 0x0e)  

        {  

          while(keyin != 0x0f)  

            keyval = 1;  

          display(keyval);  

          P1IFG = 0;            //必须软件清除  

          return;  

        }  

      }  

    case 0x02:  

      if(keyin == 0x0d)  

      {  

        delay(20);  

        if(keyin == 0x0d)  

        {  

          while(keyin != 0x0f)  

            keyval = 1;  

          display(keyval);  

          P1IFG = 0;            //必须软件清除  

          return;  

        }  

      }         

    case 0x03:  

      if(keyin == 0x0b)  

      {  

        delay(20);  

        if(keyin == 0x0b)  

        {  

          while(keyin != 0x0f)  

            keyval = 1;  

          display(keyval);  

          P1IFG = 0;            //必须软件清除  

          return;  

        }  

      }  

    case 0x04:  

      if(keyin == 0x07)  

      {  

        delay(20);  

        if(keyin == 0x07)  

        {  

          while(keyin != 0x0f)  

            keyval = 1;  

          display(keyval);  

          P1IFG = 0;            //必须软件清除  

          return;            

        }  

      }  

    }  

  }  

}  


关键字:MSP430  按键中断 引用地址:MSP430按键中断Ⅱ

上一篇:MSP4301602显示Ⅰ
下一篇:MSP430按键中断

推荐阅读最新更新时间:2024-03-16 15:39

基于MSP430的车体调平装置的设计与实现
随着国防技术的发展,根据任务需求,越来越多的军用武器需要随时变更工作地点。为了保证这些军用武器的机动性能,往往以载车为运输载体,如火箭炮这样的大型武器就被安装在载车上。载车到达目的地后,借助平台快速将武器架设调至水平而后工作,工作完成后平台能够快速地撤收、转移。既保证了武器的工作性能,又提高了机动性。 传统上,主要依靠人工手动完成平台的水平度调节,这需要一部分人员手动调节千斤顶,另外一部分人员观察水平仪的水泡位置。这种调平方式费时费力,且精度低、抗倾覆能力差。随着调平时间和调平精度要求的提高,过去的调平方式已远远不能满足实际情况的需要,所需时间短、精度高、抗倾覆能力强的自动调平控制技术应运而生。 在军用方面,自动调平控制系统广
[单片机]
基于<font color='red'>MSP430</font>的车体调平装置的设计与实现
MSP430 DS1302 驱动
sys.h里面需要一些延时函数。 ds1302.h #ifndef __DS1302_H #define __DS1302_H #include msp430.h #include sys.h struct ds1302time { int year; unsigned char mouth; unsigned char day; unsigned char week; unsigned char hour; unsigned char minute; unsigned char second; }; void DS1302_read_time( struct ds1302time *p );
[单片机]
关于MSP430单片机串口通信丢失数据
研究摸索了接近一个星期,把所遇到的问题写出来以供参考。 最开始看一个官方的串口收发数据的示例,然后自己操作后收发数据老是会丢失一个数据,然后看User’s Guide,取消了函数收发的方法直接用寄存器操作,问题解决。 接下来写一个组帧协议,收发完全正常。但是看上去非常的杂乱就想美化一下,就开始写函数,进行函数调用。好了,这下问题又来了,数据又会丢失。 接近一个星期的思前想后,发现不是自己写的代码有问题,是官方示例的波特率配置问题。大家都知道波特率表示每秒钟传送的码元符号的个数,是衡量数据传输速率的指标,它用单位时间内载波调制状态改变的次数来表示。晶振为1MHz波特率为15200,我自己改成了9600,问题解决。如何配置
[单片机]
字符设备驱动-高级篇按键中断程序驱动
驱动源码: #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include linux/irq.h #include asm/uaccess.h #include asm/irq.h #include asm/io.h #include asm/arch/regs-gpio.h #include asm/hardware.h int major = 0; static struct class *keyd
[单片机]
MSP430G2:低功耗模式下的IO学习
MSP430最大的特点是超低功耗,本次学习的是超低功耗模式下的IO操作。 /********************************************************** * 超低功耗频率 1.5KHZ * P1.0有1/100的周期激活 * 超低功耗的范例 * ACLK = VL0, MCLK = VLO/8 ~1.5kHz, SMCLK = n/a,主时钟选择超低功耗,超低频率的内部晶振的8分频, * VLO:Internal Very-Low-Power Low-Frequency Oscillator 内部的超低功耗,低频率振荡器 * BCSCTL3 是 Basic clock syst
[单片机]
MSP430F5529之1.44寸OLED显示
前言 有几天没更新了,最近一直忙着电赛,学习这个TI处理器芯片,因为我之前并没有接触过。毕竟我学的51单片机和32单片机,感觉这个16位的单片机“食之乏味,弃之可惜”,但是没办法,电赛TI公司赞助的,还是得准备准备哈哈,这里我是用CCS软件来入门的。 一、1.44寸OLED “独白” 其实相对于0.96寸OLED ,该OLED 最明显的特点就是它多出了四个接口(RES、DC、CS、BLK),同时保留了原有的接口(VCC、GND、SCL、SDA),下面讲一下接线问题: 电源接线: VCC :接 5V GND :接地 液晶屏数据线接线: CS : 片选信号 SCL(CLK): SPI 时钟信号引
[单片机]
<font color='red'>MSP430</font>F5529之1.44寸OLED显示
MSP430 系统时钟 ACLK、MCLK、SMCLK
MSP430基础时钟模块包含以下3个时钟输入源。 一、4个时钟振荡源 1、LFXT1CLK: 外部晶振或时钟1 低频时钟源 低频模式:32768Hz 高频模式:(400KHz-16MHz) 2、XT2CLK: 外部晶振或时钟2 高频时钟源(400KHz-16MHz) 3、DCOCLK: 内部数字RC振荡器,复位值1.1MHz 4、VLOCLK: 内部低功耗振荡器 12KHz 注:MSP430x20xx: LFXT1 不支持 HF 模式, XT2 不支持, ROSC 不支持. (1)LFXT1CLK 低频时钟源:由LFXT1振荡器产生(如图2所示)。通过软件将状态寄存器中OSCOff复位后,LF
[单片机]
基于MSP430单片机实现ARINC429总线通讯设计
  0 引言   ARINC429航空通讯总线是一种常用的惯导系统通讯总线。由于该总线的功能相对独立,航空电子系统逐步走向综合,各子系统之间的数据通讯变得更加频繁。因此,研制一种基于ARINC429总线标准多种导航检测信号的手持设备,就可以为雷达导航测试人员提供很多方便。   1 ARINC429总线简介   ARINC429总线标准又称为Mark33数字信息传输系统,由美国航空无线电公司(ARINC)颁布实施。我国在航空电子设备(诸如GPS、惯导系统、电子飞行仪表)中也大量采用了ARINC429规范与外设进行通讯。此总线允许一个发送器和最多20个接收器进行一对单向、差分耦合、双绞屏蔽线信号传输。该标准的数据字分25 bit
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved