|
在一個沒有規(guī)則性的內(nèi)容轉(zhuǎn)換中,查表程序是相當(dāng)有用的,用戶可以使用查表程序很快速的得到相關(guān)內(nèi)容的轉(zhuǎn)換。 例:設(shè)計(jì)一個程序,將如下圖所示中的PORT5讀到的一個數(shù)值,將輸入內(nèi)容做轉(zhuǎn)換,然后輸出到PORT6的7段顯示器上。 上圖中開關(guān)關(guān)閉,I/O引腳可以得到一個低電位,若是開關(guān)開啟則I/O引腳可以得到一個高電位。 圖 5.2 數(shù)碼管八段說明 7段顯示器的接線圖如上,我們要編一個表做為讀入內(nèi)容以及輸出內(nèi)容的對映。 7段顯示器各腳位電位狀態(tài) | PORT6輸出 | PORT5輸入 | H | G | F | E | D | C | B | A | 16進(jìn)位數(shù)值 | 10進(jìn)位數(shù)值 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0X3F | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0X06 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0X5B | 2 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0X4F | 3 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0X66 | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0X6D | 5 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0X7D | 6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0X07 | 7 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0X7F | 8 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0X6F | 9 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0X77 | 10 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0X7C | 11 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0X58 | 12 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0X5E | 13 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0X79 | 14 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0X71 | 15 |
程序清單如下: PC == 0X02 ;定義。 PORT5 == 5 PORT6 == 6 ORG 0X10 ;設(shè)定程序起始位址。 IOW PORT6 ;設(shè)定PORT6為Output口。 MOV A, @0XFF IOW PORT5 ;設(shè)定PORT5為Input口。 JMP START ;跳轉(zhuǎn)到主程序中。 TABLE:;輸入及輸出對映表。 ADD PC, A RETL @0X3F RETL @0X06 RETL @0X5B RETL @0X4F RETL @0X66 RETL @0X6D RETL @0X7D RETL @0X07 RETL @0X7F RETL @0X6F RETL @0X77 RETL @0X7C RETL @0X58 RETL @0X5E RETL @0X79 RETL @0X71 START: MOV A, PORT5 AND A, @0X0F CALL TABLE MOV PORT6, A JMP START |