/******************************************** *** 功能:1X4按鍵 *** 實驗內(nèi)容:按下S1 S2 S3 S4 數(shù)碼管分別顯示出0 1 2 3 *** 開發(fā)板連接方法:把J3的的跳線帽跳到1-2(左邊) *********************************************/ #include<pic.h> //包含單片機內(nèi)部資源預定義 __CONFIG(0xFF32); //芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩 const unsigned char TABLE[] = {0x3f,0x6,0x5b,0x4f,0x66}; int result; void delay(); //delay函數(shù)申明 void init(); //I/O口初始化函數(shù)申明 void scan(); //按鍵掃描程序申明 void display(int x); //顯示函數(shù)申明 /**************************************************************************** * 名 稱:main() * 功 能: * 入口參數(shù): * 出口參數(shù): ****************************************************************************/ void main() { result = 0x8; //開始時顯示F init(); //調(diào)用初始化函數(shù) while (1) //死循環(huán) { scan(); //調(diào)用按鍵掃描程序 display(result); //調(diào)用結果顯示程序 } } /**************************************************************************** * 名 稱:init() * 功 能:初始化 * 入口參數(shù): * 出口參數(shù): ****************************************************************************/ void init() { TRISB = 0X0F; //設置B口低4位為輸入 TRISD = 0; //portd 輸出 TRISC = 0xf0; TRISA = 0; //porta 輸出 PORTA = 0x00; //先關閉所有顯示 PORTD = 0x0f; PORTC = 0xff; } /**************************************************************************** * 名 稱:scan() * 功 能:按鍵掃描 * 入口參數(shù): * 出口參數(shù): ****************************************************************************/ void scan() { if (RB0 == 0) //判斷B0是否按下 result = 0x1; if (RB1 == 0) //判斷B1是否按下 result = 0x2; if (RB2 == 0) //判斷B2是否按下 result = 0x3; if (RB3 == 0) //判斷B3是否按下 result = 0x4; } /**************************************************************************** * 名 稱:display() * 功 能:結果顯示 * 入口參數(shù):int x 要現(xiàn)實的數(shù)據(jù) * 出口參數(shù): ****************************************************************************/ void display(int x) { switch (x) //根據(jù)X值的不同,跳轉到相應的部分處理 { case 0x1: PORTD = TABLE[0];PORTA = 0X3F;delay();break; //B0 case 0x2: PORTD = TABLE[1];PORTA = 0X3F;delay();break; //B1 case 0x3: PORTD = TABLE[2];PORTA = 0X3F;delay();break; //B2 case 0x4: PORTD = TABLE[3];PORTA = 0X3F;delay();break; //B3 case 0x8: PORTD = 0X71;PORTA = 0Xff;delay();break; //無按鍵下 } } /**************************************************************************** * 名 稱:delay() * 功 能:延時 * 入口參數(shù): * 出口參數(shù): ****************************************************************************/ void delay() { int i; //定義整形變量 for (i = 600;i--;); //延時 }