L_GAME_START:
bGameReStart =1;
while(1)
{
key_matrix_flip_scan(key_value); // 4 x 4 按鈕矩陣掃描
if (key_value ==2 || key_value == 5 )OE_74HC595 = 1; //turn off 8x8 LED matrix
else OE_74HC595 = 0; // enable it otherwsie
switch (key_value)
{
case 1: // 按鈕- 1
_8x8ledMatrixDisplay(mPONG);
bGameReStart = 1; // 從新開始游戲
continue;
case mPADDLE_UPP-1:
case mPADDLE_UPP:
myPaddle.pShift = mPADDLE_UPP - key_value;
myPaddle.pTop -=2;
if (myPaddle.pTop < 0)myPaddle.pTop =0;
goto L_GAME_UPDATE;
case mPADDLE_UP-1:
case mPADDLE_UP:
myPaddle.pShift = mPADDLE_UP - key_value;
myPaddle.pTop -=1;
if (myPaddle.pTop < 0)myPaddle.pTop =0;
goto L_GAME_UPDATE;
case mPADDLE_DOWN-2:
case mPADDLE_DOWN-1:
case mPADDLE_DOWN:
myPaddle.pShift = mPADDLE_DOWN - key_value;
myPaddle.pTop +=1;
if (myPaddle.pTop > 4)myPaddle.pTop =5;
goto L_GAME_UPDATE;
case mPADDLE_DOWND-3:
case mPADDLE_DOWND-2:
case mPADDLE_DOWND-1:
case mPADDLE_DOWND:
myPaddle.pShift = mPADDLE_DOWND - key_value;
myPaddle.pTop +=2;
if (myPaddle.pTop > 4)myPaddle.pTop =5;
goto L_GAME_UPDATE;
case mUPDATE_PONG:
if(bGameReStart)// re-start game
{
// 游戲初始化代碼,前面已經講解,此處不再重復
}
if (key_value ==2 || key_value == 5 )OE_74HC595 = 1; //turn off 8x8 LED matrix
else OE_74HC595 = 0; // enable it otherwsie
板子的設計者提示玩家,如果要禁止 8x8 LED 矩陣,可以使用跳針,其實沒有這個必要,這個跳針設計是多余的。8x8 LED 矩陣的開關,完全可以通過軟件加以控制。我在板子上加了一根飛線,用 sbit OE_74HC595 = P1^7 定義了其用法,接下來就可以用P1^7 端口控制74HC595芯片,從而實現8x8 LED 矩陣的開和關,大家留意一下下面視頻和圖片里的飛線即可。
..... ...... ...... let's call it a day. .................. .................... ................... ........................ ........... .......... .............