正在加载图片...
微机控制技术·第13章·常用软件设计 第十三章常用软件设计 131与软件结构相关的散转、查表程序设计 查表程序设计 单片机应用系统中,査表程序是一种常用程序,它广泛使用于LED显示器控制,打印机打印以及数 据补偿、计算、转换等功能程序中。 查表,就是根据变量x在表格中査找y,使y=f(x)。 x有各种结构,如有时ⅹ可取小于n(n为定值)的自然数子集:有时,ⅹ取值范围较大,并且不会取 到该范围中的所有值,即对某些ⅹ,f(x)无定义,例如x为不定长的字符串或x为某些ASCI字符等。 y也有各种结构,如有时y可取定字长的数,但不是所有该字长的数都有对应的x;有时y可取小于 m(m为定值)的自然数子集 对于表格本身,也有许多不同的结构。以存放顺序分,有有序表与无序表,以存放地点分,有的表 格存放在程序存储器中(用MOⅤC指令访问),有的表格存放在数据存储器中(用MOX指令访问)。表 格的存放内容也各有不同,有的只存放y值,有的只存放x值;有的表格中还包括含有几个子表;表格中 的每一项的长度也各有不同,有的是定长,有的为不定长。其它还有多维表格等情况。下面介绍几种常见 类型查表程序和这些表格的构成方法。 (一)x可取小于等于n的自然数的全体,y为定字长 由于x取值为自然数0,1,2,3,…,n有序等差排列,而y又为定字长,故可以简化表格,在表中 只存放y的值 例1设有一个巡回检测报警装置,需对16路输入值进行比较,当每一路输入值超过该路的报警值时, 实现报警。下面根据这一要求,编制一个查表程序。 ⅹ为路数,查表时x按0,1,2,…,15(n=15)取数,yi为报警值,二字节数,依xi顺序列成表格放 在TABl中。进入查表程序前,路数xi放在R2中,查表后的最大值放在R3、R4中 查表程序如下 MOV A, R2 路数ⅹ→R2 ADD A, R2 ;R2·2→A 保存路数ⅹ值 ADDA,#AB(rel):加上表首偏移量 MOVC A,@A+PC;查第一字节 XCH A, R3 第一字节→R3 ADDA,#TAB(rel)+1:加上表首偏移量 MOVC A,@A+PC 查第二字节 R4, A 第二字节入R4 TAB:DW05F0H,OE89H,0A695H,1BAAH:报警值表 D9BH,7F93H,0378H,26D7H DW2710H,9B3FH,1A66H,22B3H DW 1174H, 16EFH, 3aB4H9, OCAOH 上述査表程序使用 MOVC A,@A+PC,因此,表格偏移不得超过255个字节。当表 格偏移大于255个字节时,使用 MOVCA,@A十DPIR查表指令 例2在一个温度测量装置中,测量的电压与温度为非线性关系,需对它进行线性化处理。如测得值微机控制技术·第 13 章·常用软件设计 1 第十三章 常用软件设计 13.1 与软件结构相关的散转、查表程序设计 一、查表程序设计 单片机应用系统中,查表程序是一种常用程序,它广泛使用于 LED 显示器控制,打印机打印以及数 据补偿、计算、转换等功能程序中。 查表,就是根据变量 x 在表格中查找 y,使 y=f(x)。 x 有各种结构,如有时 x 可取小于 n(n 为定值)的自然数子集;有时,x 取值范围较大,并且不会取 到该范围中的所有值,即对某些 x,f(x)无定义,例如 x 为不定长的字符串或 x 为某些 ASCII 字符等。 y 也有各种结构,如有时 y 可取定字长的数,但不是所有该字长的数都有对应的 x;有时 y 可取小于 m(m 为定值)的自然数子集。 对于表格本身,也有许多不同的结构。以存放顺序分,有有序表与无序表,以存放地点 分,有的表 格存放在程序存储器中(用 MOVC 指令访问),有的表格存放在数据存储器中(用 MOVX 指令访问)。表 格的存放内容也各有不同,有的只存放 y 值,有的只存放 x 值;有的表格中还包括含有几个子表;表格中 的每一项的长度也各有不同,有的是定长,有的为不定长。其它还有多维表格等情况。下面介绍几种常见 类型查表程序和这些表格的构成方法。 (一)x 可取小于等于 n 的自然数的全体,y 为定字长。 由于 xi 取值为自然数 0,l,2,3,…,n 有序等差排列,而 yi 又为定字长,故可以简化表格,在表中 只存放 yi 的值。 例 1 设有一个巡回检测报警装置,需对 16 路输入值进行比较,当每一路输入值超过该路的报警值时, 实现报警。下面根据这一要求,编制一个查表程序。 x 为路数,查表时 xi 按 0,1,2,…,15(n=15)取数,yi 为报警值,二字节数,依 xi 顺序列成表格放 在 TABl 中。进入查表程序前,路数 xi 放在 R2 中,查表后的最大值放在 R3、R4 中。 查表程序如下: TB1: MOV A,R2 ;路数 xi→R2 ADD A,R2 ;R2·2→A MOV R3,A ;保存路数 xi 值 ADD A,#TAB(rel) ;加上表首偏移量 MOVC A,@A+PC ;查第一字节 XCH A,R3 ;第一字节→R3 ADD A,#TAB(rel)+1 ;加上表首偏移量 MOVC A,@A+PC ;查第二字节 MOV R4,A ;第二字节入 R4 RET TAB: DW 05F0H,0E89H,0A695H,1BAAH;报警值表 DW 0D9BH,7F93H,0378H,26D7H DW 2710H,9B3FH,1A66H,22B3H DW 1174H,16EFH,3aB4H9,0CA0H 上述查表程序使用 MOVC A,@A+PC,因此,表格偏移不得超过 255 个字节。当表 格偏移大于 255 个字节时,使用 MOVC A,@A 十 DPTR 查表指令。 例 2 在一个温度测量装置中,测量的电压与温度为非线性关系,需对它进行线性化处理。如测得值
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有