在一个沒有規则性的内容转换中,查表程序是相当有用的,用户可以使用查表程序很快速的得到相关内容的转换。
例:设计一个程序,將如下图所示中的PORT5读到的一个数值,将输入内容做转换,然后输出到PORT6的7段显示器上。

上图中开关关闭,I/O引脚可以得到一个低电位,若是开关开启则I/O引脚可以得到一个高电位。

图 5.2 数码管八段说明
7段显示器的接线图如上,我們要編一个表做为读入内容以及输出内容的对映。
|
7段显示器各脚位电位状态 |
PORT6输出 |
PORT5输入 | |||||||
|
H |
G |
F |
E |
D |
C |
B |
A |
16进位数值 |
10进位数值 |
|
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 ;设定程序起始位址。
MOV A, @0
IOW PORT6 ;设定PORT6为Output口。
MOV A, @0XFF
IOW PORT5 ;设定PORT5为Input口。
JMP START ;跳转到主程序中。
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