●第九章计算机控制系统的数据处理 922计算查表法 计算查表法适用于数据按一定的规律排列,并且搜索内 容和表格数据地址之间的关系能用公式表示的有序表格。 下面以实例介绍计算查表法的程序设计。 设计一巡回检测报警装置,要求能对16个通道输入值进 行比较,当某一通道输入值超过该路的报警值时,发出 报警信号。 通道值和报警值的存放地址之间的关系可用下面的公式 表示: 报警值存放地址=数据表格起始地址+通道值×2
第九章 计算机控制系统的数据处理 9.2.2 计算查表法 计算查表法适用于数据按一定的规律排列,并且搜索内 容和表格数据地址之间的关系能用公式表示的有序表格。 下面以实例介绍计算查表法的程序设计。 设计一巡回检测报警装置,要求能对16个通道输入值进 行比较,当某一通道输入值超过该路的报警值时,发出 报警信号。 通道值和报警值的存放地址之间的关系可用下面的公式 表示: 报警值存放地址=数据表格起始地址+通道值×2
●第九章计算机控制系统的数据处理 设通道值(以16进制表示)存放在CIRC单元中,查表后的上限报警 值存放在 UPPER单元中,下限报警值存放在 LOWER单元中。 查表程序清单如下: CLR C ;进位标志位清零 MOV DPTR,#AB;设置数据表首址 MOVA,CIRC;读检测通道值 RLC A ;检测通道值乘2 MOVC A,aA+DPTR;读上限值 MOV UPPER.A ;保存上限值 INC DPTR MOCA,aA+DPTR;读下限值 MOV LOWER,A;保存下限值 RET TAB: UPPERo, LOWERO, UPPERI, LOWERI, .. UPPER15, LOWERI5 ;报警数据表 @00000 返回本节 ●●0●●●●0
第九章 计算机控制系统的数据处理 设通道值(以16进制表示)存放在CIRC单元中,查表后的上限报警 值存放在UPPER单元中,下限报警值存放在LOWER单元中。 查表程序清单如下: CLR C ;进位标志位清零 MOV DPTR,#TAB ;设置数据表首址 MOV A,CIRC;读检测通道值 RLC A ;检测通道值乘2 MOVC A,@A+DPTR ;读上限值 MOV UPPER,A ;保存上限值 INC DPTR MOVC A,@A+DPTR ;读下限值 MOV LOWER,A ;保存下限值 RET TAB: UPPER0,LOWER0,UPPER1,LOWER1,...., UPPER15,LOWER15 ;报警数据表 返回本节
●第九章计算机控制系统的数据处理 923对分查表法 对分查表法的最高 设置数据起点、终点 搜索次数Log2N-l 「读检索关键字 和顺序查表法相比 检索项序号= 起点+终点 对分法可以大大减 是到检索范 少查表次数,提高 检索效率。 取对分数据 对分查表法的程 <是关键字否? 序流程图如图95 关键字否? 是 所示 设置检索 保存检索到 失败标志 的数据序号 对分序号做起点对分序号做终点
第九章 计算机控制系统的数据处理 9.2.3 对分查表法 对分查表法的最高 搜索次数Log2N-1。 和顺序查表法相比, 对分法可以大大减 少查表次数,提高 检索效率。 对分查表法的程 序流程图如图9-5 所示 开 始 对分数>关 键字否? 读检索关键字 保存检索到 的数据序号 取对分数据 设置数据起点、终点 检索项序号= 对分序号做起点 2 起点+终点 到检索范 围边界否? 是关键字否? 对分序号做终点 起点数据= 关键字否? 设置检索 失败标志 返 回 否 否 否 否 是 是 是 是