第三章常用控制程序设计内容摘要:
; 累加结果除 2 RRC A MOV FLAG,A MOV A,SAMP_H RRC A MOV SAMP_H,A MOV A,SAMP_L RRC A MOV SAMP_L,A DJNZ R7,DIV128 ; 未除完 , 继续 MOV SAMP,SAMP_L ; 保存滤波后采样值 POP A ; 恢复现场 POP PSW RET 第三章 常用控制程序设计 5. 一阶滞后滤波 图 320 一阶滞后滤波程序流程图 求求求1nyanxa )1( 1)1(nnyaxannyy 1开 始返 回第三章 常用控制程序设计 一阶滞后滤波程序清单: MOV MUL1_H,COEFF1_H MOV MUL1_L,COEFF1_L MOV MUL2_H,DATA1_H MOV MUL2_H,DATA1_L ACALL MULTD ; MOV BUFF1,PR_H MOV BUFF2,PR_L MOV MUL1_H,COEFF2_H MOV MUL1_L,COEFF2_L 1nya 第三章 常用控制程序设计 MOV MUL2_H,DATA2_H MOV MUL2_H,DATA2_L ACALL MULTD ; CLR C MOV A,PR_H ; ADD A,BUFF1 MOV PR_H,A MOV A,PR_L ADDC A,BUFF2 ; MOV PR_L,A 第三章 常用控制程序设计 双字节无符号位乘法子程序( MULTD)。 入口条件:乘数 MUL1存于 MUL1_H和 MUL1_L单元中 ,被乘数 MUL2存于 MUL2_H和 MUL2_L单元中。 出口条件:乘积按顺序存于 PR_H、 PR_L、MUL1_H、 MUL1_L单元中。 第三章 常用控制程序设计 MULTD: CLR C ; 清进位标志位 MOV PR_L,00H ; 乘积高 8位清零 MOV PR_H,00H MOV R7,11H ; 设置循环次数 LOOP1: JNC LOOP2 ; 进位标志位为零 , 转 LOOP2 MOV A,PR_L ; PR+MUL2 ADD A,MUL2_L MOV PR_L,A MOV A,PR_H ADDC A,MUL2_H MOV PR_H,A 第三章 常用控制程序设计 LOOP2: MOV A,PR_H ; PR右移一位 RRC A MOV PR_H,A MOV A,PR_L RRC A MOV PR_L,A MOV A,MUL1_H ; MUL1右移一位 RRC A MOV MUL1_H,A MOV A,MUL1_L RRC A MOV MUL1_L,A DJNZ R7,LOOP1 ; 循环未结束 , 继续 第三章 常用控制程序设计 6. 防脉冲干扰平均值法 图321 防脉冲干扰平均值法程序流程框图 设置数据区首址数据排序设比较次数去掉最小值求 平 均值剩余数据求和是排序完成否。 去掉最大值否开 始返 回第三章 常用控制程序设计 防脉冲干扰平均值法程序清单: PUSH A ; 保护现场 PUSH PSW SORT: MOV R0,DATA ; 数据存储区单元首址 MOV R7,10H ; 读比较次数 CLR CHANGE ; 清交换标志位 LOOP: MOV A,@R0 ; 取第一个数 MOV FIRST,A ; 保存第一个数 INC R0 MOV SECOND,@R0 ; 保存第二个数 CLR C SUBB A,@R0 ; 两数比较 第三章 常用控制程序设计 JC NEXT ; 第一数小于第二数 , 不交换 MOV @R0,FIRST DEC R0 MOV @R0,SECOND ; 交换两数 INC R0 SETB CHANGE ; 置交换标志位 NEXT: DJNZ R7,LOOP ; 进行下一次比较 JB CHANGE,SORT ; 进行下一轮比较 MOV FLAG,00H ; 进位位清零 INC DATA ; 去掉最小值 MOV R0,DATA ; 设置数据存储区首址 MOV R7, 08H ; 设置累加循环次数,去掉最大值 CLR A ; 清累加器 LOOP: ADD A,@R0 ; 两数相加 JNC NEXT ; 无进位 , 转 NEXT INC FLAG ; 有进位,进位位加 1 第三章 常用控制程序设计 NEXT: INC R0 ; 数据指针加 1 DJNZ R7, LOOP ; 未加完 , 继续加 MOV R7,03H ; 设置循环次数 DIVIDE: MOV TEMP,A ; 保存累加器中的内容 MOV A,FLAG ; 累加结果除 2 CLR C RRC A MOV FLAG,A MOV A,TEMP RRC A DJNZ R7,DIVIDE ; 未结束 , 继续执行 MOV SAMP,A ; 保存结果至 SAMP中 POP A ; 恢复现场 POP PSW RET 返回本节 第三章 常用控制程序设计 标度变换程序设计 对于一般的线性仪表而言 , 标度变换公式为: 为了简化程序设计,一般把被测参数的起点 A0所对应的 A/D转换值设定为 0,即 N0=0,这样式( 36)可以改写为: 返回本章首页 第三章 常用控制程序设计 例 32 某温度测量仪表的量程为 100~900℃ ,利用 8031和ADC0809进行 A/D转换。 在某一时刻计算机采样并经过数字滤波后的的数字量为 0CDH求此时对应的温度值是多少。 (设仪表的量程是线性的) 解:由式( 37)可知,A0=100℃ ,Am=900℃ ,Nx=0CDH=(205)D,Nm=0FFH=(255)D,所以此时对应的温度为: 第三章 常用控制程序设计 标度变换程序清单: BDCHAN: MOV SUB1_L,AM ; INC AM MOV SUB1_H,AM MOV SUB2_L,A0 INC A0 MOV SUB2_H,A0 ACALL SUB2 MOV MUL1_H,DIFF_H MOV MUL1_L,DIFF_L MOV SUB1_L,NX ; 第三章 常用控制程序设计 INC NX MOV SUB1_H,NX MOV SUB2_L,N0 INC N0 MOV SUB2_H,N0 ACALL SUB2 MOV MUL2_H,DIFF_H MOV MUL2_L,DIFF_L ACALL MULTD ; 求 MOV DIV1_H,PR_H MOV DIV1_L,PR_L MOV SUB1_L,NM ; 第三章 常用控制程序设计 INC NM MOV SUB1_H,NM MOV SUB2_L,N0 INC N0 MOV SUB2_H,N0 ACALL SUB2 MOV DIV2_H,DIFF_H MOV DIV2_L,DIFF_L ACALL DUBDIV ; CLR C MOV A,DIV1_L 第三章 常用控制程序设计 ADDC A,A0 MOV AX,A INC A0 MOV A,DIV1_H ADDC A,A0 MOV AX,A ; RET 第三章 常用控制程序设计 双字节减法子程序( SUB2) 双字节减法子程序( SUB2) 程序入口:被减数放在 SUB1_H、SUB1_L单元中,减数放在 SUB2_H、 SUB2_L单元中; 程序出口:差放在 DIFF_H、 DIFF_L单元中。 SUB2: CLR C MOV A,SUB1_L ; A←SUB 1_L SUBB A,SUB2_L ; 低 8位相减 MOV DIFF_L,A ; 保存低 8位差值 MOV A,SUB1_H ; A←SUB 1_H SUBB A,SUB2_H ; 高 8位相减 MOV DIFF_H,A ; 保存高 8位差值 RET 第三章 常用控制程序设计 双字节无符号数除法( DUBDIV) 程序入口:被除数存放在 DIV1_H、 DIV1_L单元中 , 除数存放在 DIV2_H、 DIV2_L单元中; 程序出口:商存放在 DIV1_H、 DIV1_L单元中 , 余数存放在 L_L和L_H单元中。 DUBDIV: CLR A ; 余数单元清零 MOV L_H,A MOV L_L,A MOV R0,10H ; 设置除法移位次数 LOOP: CLR C ; 移位 MOV A,DIV1_L 第三章 常用控制程序设计 RLC A MOV DIV1_L,A MOV A,DIV1_H RLC A MOV DIV1_H,A MOV A,L_L RLC A MOV L_L,A MOV A,L_H RLC A MOV L_H,A MOV ,C 第三章 常用控制程序设计 LP1: MOV A,L_L ; 余数单元减除数 SUBB A,DIV2_L MOV R1,A MOV A,L_H SUBB A,DIV2_H JB ADD1 JC SMALL ADD1: MOV L_H,A MOV A,R1 MOV L_L,A INC DIV1_L ; 商加一 SAMLL: DJNZ R0,LOOP 第三章 常用控制程序设计 MOV 20H,L_H ; 四舍五入 JB 07H, ADD_D ; 商 的 最 高 位 为 1 , 则转ADD_D CLR C ; 判断小数部分是否大于 MOV A,L_L RLC A MOV L_L,A MOV A,L_H RLC A SUBB A,DIV2_H 第三章 常用控制程序设计 JC RETURN ; 小数部分小于 , 退出 JNZ ADD1 ; 小数部分大于 , 则转 ADD_D MOV A,L_L SUBB A,DIV2_L JC RETURN ADD_D: CLR C ; 商加一 INC DIV1_L MOV A,DIV1_H ADDC A,00H MOV DIV1_H,A RETURN: RET 返回本节 第三章 常用控制程序设计 上下限报警处理程序设计 报警程序主要有以下几个步骤组成: ( 1) 采样被测参数。 ( 2) 比较采样值和给定的上下限。 ( 3) 根据比较结果执行相应的处理程序。 返回本章首页 第三章 常用控制程序设计 例 33 设计一简单的单字节上下限报警程序 , 当采样值超出上 、 下限时 , 分别执行相应的报警处理程序。 设上限报警值存放在 Amax单元 , 下限报警值存放在 Amin单元 , 采样值存放在 SAMP单元。 简单上下限报警程序程序清单如下: 第三章 常用控制程序设计 … … . CLR C ; 清进位标志位 MOV A,Amax ; 读上限报警值 SUBB A,SAMP ; 判断是否超过上限报警值 JC UPPER ; 超过上限 , 转报警处理程序 MOV A,Amin ; 读下限报警值 SUBB A,SAMP ; 判断是否超过下限报警值 JNC LOWER ; 超过下限 , 转报警处理程序 … … UPPER: 超上限处理程序。 LOWER: 超下限处理程序。 第三章 常用控制程序设计 例 34 设计一报警处理程序。 只有采样值连续 3次异常时 , 系统才进行报警处理。 报警。第三章常用控制程序设计
相关推荐
对渐近稳定的平衡状态,相应的李雅普诺夫函数总是存在的。 第二法适用范围:普遍方法。 设系统状态方程为: Xc=0为其平衡状态。 如果存在一个具有连续一阶偏导数的标量函数V(x,t), 并且满足下列条件: ( 1) V(x,t)是正定的; ( 2) 是负半定的; txfx ,),( txV定理 2: (条件放宽) ( 3)对于任意的初始时刻 t0和任意的初始状态 x(t0) 在 时
10滴溴酚蓝。 用 HCl滴定 ,当水层显淡绿色为终点(黄 — 紫蓝, pH=) • (三)气相色谱法测定苯甲酸、山梨酸、及其盐类(P147,151,152) • 液相色谱法测定苯甲酸、山梨酸、糖精 (P152154) •二、抗氧化剂的测定 • BHA(叔丁基对羟基茴香醚)的测定 • 样品经石油醚萃取加入 72%乙醇,使 BHA转入乙醇相中,再与 — 二氯醌氯亚胺 —
混合,就可获得含脂率为 C%的混合物。 答案可以通过十字交叉法计算得到。 比如: A 奶油的脂肪含量 40% B 脱脂乳的脂肪含量 % C 最终产品的脂肪含量 3% 斜对角上脂肪含量相减得出 CB= 及 AC=37。 那么混合物就是 % 的稀奶油和 % 的脱脂乳。 于是得到了 3% 的标准化产品。 根据下面的公式可以计算出为获得要求的 C 值( X)所需的 A 和 B
• 轉換者 (roamer) 10 電信業 (結果與完成循環 ) 透過三個資料庫中的資料彙整之後,並且利用電腦找出預測模型,以找出誰是可能購買新產品的人選。 完成循環:再利用這部分的資料去針對真實回應者建立更精確的模型。 15% 3% 目標客層回覆率 控制組回覆率 11 汽車製造商 (背景介紹 ) 博蒂肯研究中心:透過專家系統的建置去找出休旅車的使用族群。