|
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++);}
|
|