|
88黑币
求助在场的各位帮我改一下这代码把我都快改崩溃了,怎么才能实现按键加减呀。帮看一看出出主意怎么修改呀。
#include "msp430x14x.h"
#define uchar unsigned char //数据定义类型#define uint unsigned int
#define DUAN P4OUT //数码管段端口定义
#define W1_H P5OUT|=BIT0 //位选端,w1置位1
#define W1_L P5OUT&=~BIT0 //位选端,w1置位0
#define W2_H P5OUT|=BIT1
#define W2_L P5OUT&=~BIT1
void delay(uint t); //延时
void display(uchar x);//显示,2位数码管
uchar i=99; uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xf8,0x80,0x90};//共阳极数码管
void display(uchar x) //显示函数,显示一个两位数
{
W1_L;W2_H;DUAN=led[x%10];delay(1);
//显示个位
W1_L;W2_L;DUAN=0xff;delay(1);
//关闭
W2_L;W1_H;DUAN=led[x/10]; delay(1); //显示十位
W1_L;W2_L;DUAN=0xff; delay(1);
//关闭
}
void main( void )
{ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P4DIR=0xff;
//Io口初始化 p4口作为输出,数码管段选
P4OUT=0xff;
P5DIR=BIT0+BIT1;
/*****************中断初始化*************/ P2IE|=BIT6;
P2IES|=BIT6;
P2IFG&=~BIT6;
P2IE|=BIT7;
P2IES|=BIT7;
P2IFG&=~BIT7;
_EINT(); //开总中断允许
while(1) { display(led[i]); }
}
/****************P2中断服务程序*************/
#pragma vector = PORT2_VECTOR__interrupt void Port_2(void)
{ if((P2IFG&BIT6)==BIT6)
//P2.0按键加
{ i++;
if(i==99)i=0;
P2IFG &=~BIT6;
//清除中断标志 }
else if((P2IFG&BIT7)==BIT7) //P2.1按键减
{ i--;
if(i==0) i=99;
P2IFG &=~BIT7; //清除中断标志}
}
void delay(uint t)
{uint i,j;for(i=0;i<t;i++) for(j=0;j<255;j++);}
|
|