MSP430按键中断

电子元件 4年前 (2022) aysz01
0

#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;

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 )

{

uchar temp,keyval;

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

P2DIR = 0XFF;P2OUT = 0XFF;

P3DIR = 0XFF;P3OUT = 0XFF;

P4DIR = 0XFF;P4OUT = 0XFF;

P5DIR = 0XFF;P5OUT = 0XFF;

P6DIR = 0XFF;P6OUT = 0XFF;

P1DIR = 0XF0;

int num = 0;

// Stop watchdog timer to prevent time out reset

WDTCTL = WDTPW + WDTHOLD;

while(1)

{

if(keyin != 0x0f)

{

delay(5);

if(keyin != 0x0f)

{

temp = keyin;

while(keyin != 0x0f);//松手检测

switch(temp)

{

/* 1 case 0x0e: keyval = 1;display(keyval);break;

case 0x0d: keyval = 2;display(keyval);break;

case 0x0b: keyval = 3;display(keyval);break;

case 0x07: keyval = 4;display(keyval);break;

default: keyval = 8;display(keyval);break; */

/* 2 case 0x0d: num++;if(num==16)num=0;display(num);break;

case 0x0b: num--;if(num==0)num=15;display(num);break;*/

}

}

}

}

}

版权声明:aysz01 发表于 2022-08-06 12:21:05。
转载请注明:MSP430按键中断 | 鳌游电工

暂无评论

暂无评论...