《【教学课件】第三章常用控制程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章常用控制程序设计.ppt(174页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 常用控制程序设计常用控制程序设计第三章第三章常用控制程序设计常用控制程序设计3.1判断程序设计判断程序设计3.2巡回检测程序设计巡回检测程序设计3.3数字滤波程序设计数字滤波程序设计3.4标度变换程序设计标度变换程序设计3.5上下限报警处理程序设计上下限报警处理程序设计3.6LED数码管显示程序设计数码管显示程序设计3.7定时程序设计定时程序设计3.8键盘控制程序设计键盘控制程序设计3.9抗干扰技术抗干扰技术3.10电机控制程序设计电机控制程序设计3.11步进电机控制步进电机控制第三章第三章 常用控制程序设计常用控制程序设计3.1判断程序设计判断程序设计3.1.1算术判断程序算术
2、判断程序3.1.2逻辑判断程序逻辑判断程序3.1.3标志判断程序标志判断程序返回本章首页第三章第三章 常用控制程序设计常用控制程序设计判判断断程程序序就就是是分分支支执执行行程程序序。程程序序在在执执行行时时,首首先先判判定定给给定定的的条条件件是是否否满满足足,根根据据判判定定的的结结果果(真真或或假假)再再执执行行相相应的操作。应的操作。例例如如:在在转转速速控控制制系系统统中中,电电机机的的恒恒速速运运转转一一般般是是通通过过控控制制输输入入电电压压来来实实现现的的,首首先先检检测测出出电电机机的的实实际际转转速速,再再比比较较电电机机的的实实际际转转速速和和给给定定转转速速,如如果果电
3、电机机的的转转速速低低于于给给定定转转速速,就就需需要要增增加加输输入入电电压压;如如果果电电机机的的转转速速高高于于给给定定转转速速,就就需需要要降降低低输输入入电电压压。上上述述功功能能的的执执行行过过程程如如图图3-1所所示。示。第三章第三章 常用控制程序设计常用控制程序设计图图3-1判断程序框图判断程序框图检测电机转速是否大于给定转速降低输入电压提高输入电压是否第三章第三章 常用控制程序设计常用控制程序设计MCS-51系系列列的的程程序序状状态态字字(PSW)是是一一个个用用于于存存储储程程序序运运行行状状态态信信息息的的8位位寄寄存存器器,其其位位定定义义如如表表3-1所所示示。其其
4、中中有有些些位位状状态态是是根根据据程程序序运运算算结结果果由由硬硬件件自自动动设设置置;而而有有些些位位状状态态则则是是通通过过软软件件设设定定的的。PSW的的位位状状态态可可通通过过指指令令读读出,以实现程序的转移。出,以实现程序的转移。返回本节第三章第三章 常用控制程序设计常用控制程序设计3.1.1算术判断程序算术判断程序1.两个两个8位无符号数比较位无符号数比较2.两个两个16位无符号数比较位无符号数比较3.两个两个8位有符号数的比较位有符号数的比较第三章第三章 常用控制程序设计常用控制程序设计1.两个两个8位无符号数比较位无符号数比较图图3-28位无符号数的比较流程框图位无符号数的比
5、较流程框图第三章第三章 常用控制程序设计常用控制程序设计CLRCY;进位标志清零进位标志清零MOVA,M;AMSUBBA,N;求求MNJZEQU;累加器累加器A=0,则则M=N,转转EQUJCLESS;CY=1,有借位,则有借位,则MN处理程序处理程序;无借位,则;无借位,则MN,执行执行BIG处理程序处理程序EQU:M=N处理程序处理程序LESS:MN处理程序处理程序8位无符号数的比较程序清单:位无符号数的比较程序清单:第三章第三章 常用控制程序设计常用控制程序设计2.两个两个16位无符号数比较位无符号数比较图图3-316位无符号数的比较流程框图位无符号数的比较流程框图第三章第三章 常用控制
6、程序设计常用控制程序设计16位无符号数的比较程序清单:位无符号数的比较程序清单:CLRCY;标志位清零标志位清零MOVA,MH;AMHMOVR2,NH;R2NHSUBBA,R2;高高8位比较位比较JZHEQU;高高8位相等,转低位相等,转低8位比较位比较JCLESS;有借位,转有借位,转MN理程序理程序第三章第三章 常用控制程序设计常用控制程序设计HEQU:CLRCY;标志位清零标志位清零MOVA,ML;AMLMOVR2,NL;R2NLSUBBA,R2;低低8位比较位比较JZEQU;A=0,则则M=N,转转EQUJCLESS;有借位,则有借位,则MN处理程序处理程序;无借位,执行;无借位,执行
7、MN理程序理程序EUQ:M=N处理程序处理程序LESS:M0,N0,即两数均为正数。即两数均为正数。(2)M0,N0,即即M为正数,为正数,N为负数。为负数。(3)M0,即即M为负数,为负数,N为正数。为正数。(4)M0,N0,即两数均为负数。即两数均为负数。第三章第三章 常用控制程序设计常用控制程序设计图图3-48位有符号数的比较流程框图位有符号数的比较流程框图第三章第三章 常用控制程序设计常用控制程序设计8位有符号数比较程序清单:位有符号数比较程序清单:MOVA,M;AMMOVR2,N;R2NSUBBA,R2;M和和N比较比较JZEQU;M和和N相等,转相等处理程序相等,转相等处理程序JB
8、PSW.2,FLOW;判断是否溢出判断是否溢出JBACC.7,LESS;无溢出,且无溢出,且A的最高位为的最高位为1,则,则MNFLOW:JBACC.7,BIG;有溢出,且有溢出,且A的最高位为的最高位为1,则,则MNLESS:MN处理程序处理程序;否则,;否则,MN处理程序处理程序EUQ:M=N处理程序处理程序返回本节第三章第三章 常用控制程序设计常用控制程序设计3.1.2逻辑判断程序逻辑判断程序逻辑判断程序的设计步骤:逻辑判断程序的设计步骤:(1)读入数据(开关状态或阀门的位置);读入数据(开关状态或阀门的位置);(2)屏蔽不需要的状态位;屏蔽不需要的状态位;(3)与所要求的状态比较;与所
9、要求的状态比较;(4)判断比较结果,选择程序入口。)判断比较结果,选择程序入口。第三章第三章 常用控制程序设计常用控制程序设计例例3-1图图3-5中中A、B、C、D表表示示4个个开开关关,当当四四个个开开关关均均闭闭合合时时,顺顺序序执执行行相相应应的的程程序序,否否则则,继续检测。继续检测。逻辑判断程序流程逻辑判断程序流程框图如图框图如图3-6所示。所示。图图3-5开关位置检测图开关位置检测图第三章第三章 常用控制程序设计常用控制程序设计图图3-6开开关关状状态态检检测测流流程程图图第三章第三章 常用控制程序设计常用控制程序设计逻辑判断程序清单:逻辑判断程序清单:CHECK:MOVA,P1;
10、读入开关状态读入开关状态ANLA,#55H;屏蔽无用位屏蔽无用位XRLA,#00H;判断判断A、B、C、D是否全部闭合是否全部闭合JNZCHECK;A、B、C、D没全部闭合,继续检测没全部闭合,继续检测;否则顺序执行相应程序;否则顺序执行相应程序返回本节第三章第三章 常用控制程序设计常用控制程序设计3.1.3标志判断程序标志判断程序标志判断的设计思想标志判断的设计思想是:根据某一设定的是:根据某一设定的标志单元(或标志位)标志单元(或标志位)的状态,决定程序的的状态,决定程序的执行方向。电机旋转执行方向。电机旋转方向控制程序流程图方向控制程序流程图如图如图3-7所示。所示。图图3-7电机旋转方
11、向控制程序流程图电机旋转方向控制程序流程图第三章第三章 常用控制程序设计常用控制程序设计电机旋转方向控制程序清单:电机旋转方向控制程序清单:FLAGBIT00H;设定设定00H为电机旋转方向控制位为电机旋转方向控制位JBFLAGRIGHT;FLAG=1,转转RIGHTLEFT:;FLAG=0,顺时针旋转控制程序顺时针旋转控制程序RIGHT:;逆时针旋转控制程序逆时针旋转控制程序返回本节第三章第三章 常用控制程序设计常用控制程序设计3.2巡回检测程序设计巡回检测程序设计3.2.1概述概述3.2.2巡回检测举例巡回检测举例返回本章首页第三章第三章 常用控制程序设计常用控制程序设计3.2.1概述概述
12、所谓的巡回检测就是对生产过程中的各个参数按所谓的巡回检测就是对生产过程中的各个参数按照一定的周期进行检查和测量,检测的数据通过照一定的周期进行检查和测量,检测的数据通过计算机处理后可以进行显示、打印和报警等操作。计算机处理后可以进行显示、打印和报警等操作。巡回检测程序主要由以下几个方面构成:巡回检测程序主要由以下几个方面构成:1.采样周期采样周期T的确定的确定2.采样开关通道号的控制采样开关通道号的控制3.A/D转换转换4.数据处理数据处理返回本节第三章第三章 常用控制程序设计常用控制程序设计3.2.2巡回检测举例巡回检测举例1.利用利用8位位A/D转换芯片(转换芯片(ADC0809)2.采用
13、采用12位位A/D转换芯片(转换芯片(AD574A)第三章第三章 常用控制程序设计常用控制程序设计1.利用利用8位位A/D转换芯片(转换芯片(ADC0809)图图3-8炉温巡回检测电路原理图炉温巡回检测电路原理图第三章第三章 常用控制程序设计常用控制程序设计系统的硬件电路介绍:系统的硬件电路介绍:(1)测量元件和变送器)测量元件和变送器(2)A/D转换电路转换电路(3)二分频电路)二分频电路第三章第三章 常用控制程序设计常用控制程序设计本本程程序序由由系系统统初初始始化化程程序序和和中中断断程程序序组组成成。初初始始化化程程序序完完成成中中断断向向量量和和定定时时器器初初值值的的设设定定;中中
14、断断程程序序完完成成数数据据采采样样工工作作,实实现现对对8个通道的巡回检测。个通道的巡回检测。初初始始化化程程序序功功能能:设设置置定定时时器器0、外外部部中中断断0和和外外部部中中断断1的的中中断断程程序序入入口口;设设置置定定时时器器0的的工工作作方方式式为为方方式式1,定定时时时时间间为为100ms;设设置计数单元(置计数单元(30H)初值。初值。初始化程序流程框图如图初始化程序流程框图如图3-9所示。所示。图图3-9初初始始化化程程序序流流程程图图第三章第三章 常用控制程序设计常用控制程序设计初始化程序清单:初始化程序清单:ORG0000HAJMPSTARTORG0003HAJMPS
15、AMPLE;转采样中断程序转采样中断程序ORG000BHAJMPTIME0;转转8秒定时中断程序秒定时中断程序ORG0013HAJMPEOC;转转EOC中断处理程序中断处理程序START:MOVTMOD,#01H;置定时器置定时器0为工作方式为工作方式1MOVTH0,#3CH第三章第三章 常用控制程序设计常用控制程序设计MOV TL0,#0B0H;定时器初值设定定时器初值设定MOV 30H,#00H;置计数初值置计数初值SETB IT0;中断请求信号为脉冲方式中断请求信号为脉冲方式SETB IT1;中断请求信号为脉冲方式中断请求信号为脉冲方式SETB EX0;外部中断外部中断0中断允许中断允许
16、SETB ET0;定时器定时器0中断允许中断允许SETB EA;开中断开中断SETB TR0;启动定时器启动定时器HERE:AJMP HERE;等待中断等待中断第三章第三章 常用控制程序设计常用控制程序设计定时器中断程序流程框图如图定时器中断程序流程框图如图3-10所示。所示。图图3-10定定时时器器中中断断程程序序流流程程框框图图第三章第三章 常用控制程序设计常用控制程序设计定时器中断程序程序清单:定时器中断程序程序清单:TIME0:CLREA;关中断关中断INC30HMOVA,30HXRLA,#50H;判断是否到判断是否到8秒秒JZS_8;8秒定时到,转至秒定时到,转至S_8AJMPREC
17、OUN;未到未到8秒,继续计时秒,继续计时S_8:SETBP3.2;触发外部中断触发外部中断0NOPCLRP3.2NOPRECOUN:MOVTH0,#3CHMOVTL0,#0B0H;设定定时器初值设定定时器初值SETBEA;开中断开中断RETI;中断返回中断返回第三章第三章 常用控制程序设计常用控制程序设计数据采样程序流程框图如图数据采样程序流程框图如图3-11所示。所示。第三章第三章 常用控制程序设计常用控制程序设计数据采样程序程序清单:数据采样程序程序清单:SAMPLE:SETB00H;设置标志位设置标志位MOVDPTR,#0F00H;设置通道初值设置通道初值MOVR6,#08H;设置通道
18、数设置通道数MOVR7,#05H;设置采样次数设置采样次数MOVR0,#40H;设置数据区首址设置数据区首址TRAN_S:MOVX DPTR,A;启动启动A/D转换程序流程图转换程序流程图WAIT:JB00H,WAIT;标志位为标志位为1等待等待A/D转换完成中断转换完成中断第三章第三章 常用控制程序设计常用控制程序设计SETB00H;置标志位置标志位INCDPTR;通道号加通道号加1INCR0INCR0INCR0INCR0INCR0;45H为下一通道采样数据存放首址为下一通道采样数据存放首址DJNZR6,#TRAN_S;8个通道采样未完,继续采样个通道采样未完,继续采样MOVDPTR,#0F
19、00H;8个通道采样结束,重置通道初值个通道采样结束,重置通道初值INCR0;修改采样数据存放地址修改采样数据存放地址DJNZR7,TRAN_S;未完成未完成5次采样,继续次采样,继续;数据处理程序;数据处理程序.RETI第三章第三章 常用控制程序设计常用控制程序设计2.采用采用12位位A/D转换芯片(转换芯片(AD574A)图图3-14AD574A和和8031的硬件接口电路图的硬件接口电路图第三章第三章 常用控制程序设计常用控制程序设计图图3-15AD574AA/D转换程序流程框图转换程序流程框图第三章第三章 常用控制程序设计常用控制程序设计D574AA/D转换程序清单:转换程序清单:ORG
20、0000HAJMPSTARTORG0003HAJMPSAMPLE;转至数据采样程序转至数据采样程序START:MOVDPTR,#0000H;建立建立AD574A的地址的地址MOVR0,#40H;设置数据存储初址设置数据存储初址SETBEX0;允许外部中断允许外部中断0SETBIT0;设置外部中断设置外部中断0请求信号方式为脉冲方式请求信号方式为脉冲方式SETBEA;中断允许中断允许MOVX DPTR,A;启动启动A/D转换转换HERE:AJMPHERE;等待中断等待中断第三章第三章 常用控制程序设计常用控制程序设计中断服务程序清单:中断服务程序清单:SAMPLE:CLREA;关中断关中断MOV
21、DPTR,#0002HMOVX A,DPTR;读读A/D转换数据的高转换数据的高8位位MOVR0,A;保存数据保存数据INCR0INCDPTRMOVX A,DPTR;读读A/D转换数据的低转换数据的低4位位SETBEA;开中断开中断RETI返回本节第三章第三章 常用控制程序设计常用控制程序设计3.3数字滤波程序设计数字滤波程序设计3.3.1概述概述3.3.2数字滤波的方法数字滤波的方法返回本章首页第三章第三章 常用控制程序设计常用控制程序设计3.3.1概述概述和模拟滤波装置相比,数字滤波有以下几个优点:和模拟滤波装置相比,数字滤波有以下几个优点:(1)数数字字滤滤波波通通过过程程序序实实现现,
22、不不需需硬硬件件设设备备,系系统统的的可可靠性较高。靠性较高。(2)数字滤波可实现多通道共用。数字滤波可实现多通道共用。(3)可对低频信号(如可对低频信号(如0.01Hz)实现滤波。实现滤波。(4)采采用用不不同同的的算算法法和和参参数数就就可可实实现现对对不不同同信信号号的的滤滤波波,使用起来灵活、方便。使用起来灵活、方便。返回本节第三章第三章 常用控制程序设计常用控制程序设计3.3.2数字滤波的方法数字滤波的方法1.程序判断滤波程序判断滤波2.中值滤波中值滤波3.算术平均滤波算术平均滤波4.加权平均滤波加权平均滤波5.一阶滞后滤波一阶滞后滤波6.防脉冲干扰平均值法防脉冲干扰平均值法第三章第
23、三章 常用控制程序设计常用控制程序设计1.程序判断滤波程序判断滤波限限幅幅滤滤波波就就是是把把相相邻邻的的两两次次采采样样值值相相减减,求求出出其其增增量量(以以绝绝对对值值表表示示),然然后后与与两两次次采采样样允允许许的的最最大大偏偏差差值值(由由被被控控对对象象的的实实际际情情况况决决定定)y进进行行比比较较,如如果果小小于于等等于于y,则则取取本本次次采采样样值值;如如果果大大于于y,则则仍仍取取上上次次采采样样值值作作为为本次采样值。本次采样值。即:即:Yn-Yn-1y,则则Yn=Yn,取本次采样值取本次采样值Yn-Yn-1y,则则Yn=Yn-1,取上次采样值取上次采样值(3-1)第
24、三章第三章 常用控制程序设计常用控制程序设计限幅滤波程序流程框图如图限幅滤波程序流程框图如图3-16所示。所示。图图3-16限限幅幅滤滤波波程程序序流流程程框框图图第三章第三章 常用控制程序设计常用控制程序设计限幅滤波程序程序清单:限幅滤波程序程序清单:PUSHPSW;保护现场保护现场PUSHACLRC;进位标志位清零进位标志位清零MOVDATA,DATA2MOVA,DATA1SUBBA,DATA;求求Yn-1-YnJNCCOMPARE;如果如果Yn-1-Yn0,转转COMPARECPLA;如果如果Yn-1-Yny,DATA1DATAOVER:POPA;恢复现场恢复现场POPPSWRET;返回
25、返回第三章第三章 常用控制程序设计常用控制程序设计限速滤波的滤波原理如下:限速滤波的滤波原理如下:设设在在顺顺序序采采样样时时刻刻T1、T2、T3所所采采集集的的数数据据分分别别为为Y1、Y2、Y3,则当则当 Y2-Y1 y,则则Y2作为采样值;作为采样值;Y2-Y1 y,则则保保留留Y2,但但不不作作为为采采样样值值,继继续采样得续采样得Y3;如果如果 Y3-Y2 y,则则Y3作为采样值;作为采样值;Y3-Y2 y,则取作为采样值。则取作为采样值。第三章第三章 常用控制程序设计常用控制程序设计2.中值滤波中值滤波所谓中值滤波法就所谓中值滤波法就是对某一被测参数是对某一被测参数连续采样连续采样
26、n次(次(n一一般取奇数),然后般取奇数),然后把把n次采样值按顺次采样值按顺序排列,取其中间序排列,取其中间值做为本次采样值。值做为本次采样值。中值滤波程序的流中值滤波程序的流程框图如图程框图如图3-17所所示。示。图图3-17中中值值滤滤波波程程序序流流程程框框图图现场保护设置数据个数读数据排序取中值据现场恢复排序完成否?是设置数据区首址 开 始返 回是否第三章第三章 常用控制程序设计常用控制程序设计中值滤波程序程序清单:中值滤波程序程序清单:PUSHPSWPUSHASORT:MOVR0,DATA;数据存储区单元首址数据存储区单元首址MOVR7,TIME;读比较次数读比较次数CLRFLAG
27、;清交换标志位清交换标志位LOOP:MOVA,R0;取第一个数取第一个数MOVFIRST,A;保存第一个数保存第一个数INCR0MOVSECOND,R0;保存第二个数保存第二个数CLRCSUBBA,R0;两数比较两数比较第三章第三章 常用控制程序设计常用控制程序设计JCNEXT;第一数小于第二数,不交换第一数小于第二数,不交换MOVR0,FIRSTDECR0MOVR0,SECOND;交换两数交换两数INCR0SETBFLAG;置交换标志位置交换标志位NEXT:DJNZR7,LOOP;进行下一次比较进行下一次比较JBFLAG,SORT;进行下一轮比较进行下一轮比较DECR0CLRCMOVA,TI
28、ME第三章第三章 常用控制程序设计常用控制程序设计RRCAMOVR7,ACONT:DECR0DJNZ R7,CONTMOV SAMP,R0;取中值取中值POPAPOPPSWRET第三章第三章 常用控制程序设计常用控制程序设计3.算术平均滤波算术平均滤波所所谓谓算算术术平平均均滤滤波波就就是是把把n个个采采样样值值相相加加,然然后后取取其其算算术术平平均均值值作作为为本本次次有有效的采样信号,即:效的采样信号,即:图图3-18算算术术平平均均滤滤波波程程序序流流程程图图第三章第三章 常用控制程序设计常用控制程序设计算术平均滤波程序清单:(本例中取采样次数算术平均滤波程序清单:(本例中取采样次数n
29、=8)PUSHPSW;现场保护现场保护PUSHAMOVFLAG,#00H;进位位清零进位位清零MOVR0,DATA;设置数据存储区首址设置数据存储区首址MOVR7,#08H;设置采样数据个数设置采样数据个数CLRA;清累加器清累加器LOOP:ADDA,R0;两数相加两数相加JNCNEXT;无进位,转无进位,转NEXTINCFLAG;有进位,进位位加有进位,进位位加1NEXT:INCR0;数据指针加数据指针加1DJNZR7,LOOP;未加完,继续加未加完,继续加MOVR7,#03H;设置循环次数设置循环次数第三章第三章 常用控制程序设计常用控制程序设计DIVIDE:MOVTEMP,A;保存累加器
30、中的内容保存累加器中的内容MOVA,FLAG;累加结果除累加结果除2CLRCRRCAMOVFLAG,AMOVA,TEMPRRCADJNZR7,DIVIDE;未结束,继续执行未结束,继续执行MOVSAMP,A;保存结果至保存结果至SAMP中中POPA;恢复现场恢复现场POPPSWRET第三章第三章 常用控制程序设计常用控制程序设计4.加权平均滤波加权平均滤波在算术平均滤波程序中,在算术平均滤波程序中,n次采样值在最后的结果中所占次采样值在最后的结果中所占的比重是相等的,这样虽然消除了随机干扰,但有用信号的比重是相等的,这样虽然消除了随机干扰,但有用信号的灵敏度也随之降低。为了提高滤波效果,将各个
31、采样值的灵敏度也随之降低。为了提高滤波效果,将各个采样值取不同的比重,然后再相加求平均值,这种方法称为加权取不同的比重,然后再相加求平均值,这种方法称为加权平均滤波。一个平均滤波。一个n项加权平均式为:项加权平均式为:第三章第三章 常用控制程序设计常用控制程序设计图图3-19加加权权平平均均滤滤波波程程序序流流程程图图第三章第三章 常用控制程序设计常用控制程序设计加权平均滤波程序清单:加权平均滤波程序清单:PUSHPSW;保护现场保护现场PUSHAMOVR7,TIME;数据个数设置数据个数设置MOVR0,DATA;数据区首址设置数据区首址设置MOVR1,COEFF;系数存储首址设置系数存储首址
32、设置MOVFLAG,#00H;累加结果存储区清零累加结果存储区清零MOVSAMP_L,#00HMOVSAMP_H,#00HLOOP:MOVA,R0;读采样值读采样值MOVB,AMOVA,R1;读加权平均系数读加权平均系数第三章第三章 常用控制程序设计常用控制程序设计MULABCLRCADDA,SAMP_L;累加和累加和MOVSAMP_L,AMOVA,BADDC A,SAMP_HJNCNEXTINCFLAGNEXT:MOVSAMP_H,AINCR0;数据区地址加数据区地址加1INCR1;系数地址加系数地址加1DJNZR7,LOOP;未加完,继续未加完,继续MOVR7,#07H;设置循环次数设置循
33、环次数第三章第三章 常用控制程序设计常用控制程序设计DIV128:CLRCMOVA,FLAG;累加结果除累加结果除2RRCAMOVFLAG,AMOVA,SAMP_HRRCAMOVSAMP_H,AMOVA,SAMP_LRRCAMOVSAMP_L,ADJNZR7,DIV128;未除完,继续未除完,继续MOVSAMP,SAMP_L;保存滤波后采样值保存滤波后采样值POPA;恢复现场恢复现场POPPSWRET第三章第三章 常用控制程序设计常用控制程序设计5.一阶滞后滤波一阶滞后滤波图图3-20一阶滞后滤波程序流程图一阶滞后滤波程序流程图第三章第三章 常用控制程序设计常用控制程序设计一阶滞后滤波程序清单
34、:一阶滞后滤波程序清单:MOV MUL1_H,COEFF1_HMOV MUL1_L,COEFF1_LMOV MUL2_H,DATA1_HMOV MUL2_H,DATA1_LACALLMULTD;MOV BUFF1,PR_HMOV BUFF2,PR_LMOV MUL1_H,COEFF2_HMOV MUL1_L,COEFF2_L第三章第三章 常用控制程序设计常用控制程序设计MOVMUL2_H,DATA2_HMOVMUL2_H,DATA2_LACALLMULTD;CLR CMOVA,PR_H;ADD A,BUFF1MOVPR_H,AMOVA,PR_LADDCA,BUFF2;MOVPR_L,A第三章第
35、三章 常用控制程序设计常用控制程序设计双字节无符号位乘法子程序(双字节无符号位乘法子程序(MULTD)。)。入入口口条条件件:乘乘数数MUL1存存于于MUL1_H和和MUL1_L单单元元中中,被被乘乘数数MUL2存存于于MUL2_H和和MUL2_L单单元中。元中。出出 口口 条条 件件:乘乘 积积 按按 顺顺 序序 存存 于于 PR_H、PR_L、MUL1_H、MUL1_L单元中。单元中。第三章第三章 常用控制程序设计常用控制程序设计MULTD:CLRC;清进位标志位清进位标志位MOVPR_L,#00H;乘积高乘积高8位清零位清零MOVPR_H,#00HMOVR7,#11H;设置循环次数设置循
36、环次数LOOP1:JNCLOOP2;进位标志位为零,转进位标志位为零,转LOOP2MOVA,PR_L;PR+MUL2ADDA,MUL2_LMOVPR_L,AMOVA,PR_HADDC A,MUL2_HMOVPR_H,A第三章第三章 常用控制程序设计常用控制程序设计LOOP2:MOVA,PR_H;PR右移一位右移一位RRCAMOVPR_H,AMOVA,PR_LRRCAMOVPR_L,AMOVA,MUL1_H;MUL1右移一位右移一位RRCAMOVMUL1_H,AMOVA,MUL1_LRRCAMOVMUL1_L,ADJNZR7,LOOP1;循环未结束,继续循环未结束,继续第三章第三章 常用控制程序
37、设计常用控制程序设计6.防脉冲干扰平均值法防脉冲干扰平均值法图图3-21防防脉脉冲冲干干扰扰平平均均值值法法程程序序流流程程框框图图第三章第三章 常用控制程序设计常用控制程序设计防脉冲干扰平均值法程序清单:防脉冲干扰平均值法程序清单:PUSHA;保护现场保护现场PUSHPSWSORT:MOVR0,DATA;数据存储区单元首址数据存储区单元首址MOVR7,#10H;读比较次数读比较次数CLRCHANGE;清交换标志位清交换标志位LOOP:MOVA,R0;取第一个数取第一个数MOVFIRST,A;保存第一个数保存第一个数INCR0MOVSECOND,R0;保存第二个数保存第二个数CLRCSUBBA
38、,R0;两数比较两数比较第三章第三章 常用控制程序设计常用控制程序设计JCNEXT;第一数小于第二数,不交换第一数小于第二数,不交换MOVR0,FIRSTDECR0MOVR0,SECOND;交换两数交换两数INCR0SETBCHANGE;置交换标志位置交换标志位NEXT:DJNZR7,LOOP;进行下一次比较进行下一次比较JBCHANGE,SORT;进行下一轮比较进行下一轮比较MOVFLAG,#00H;进位位清零进位位清零INCDATA;去掉最小值去掉最小值MOVR0,DATA;设置数据存储区首址设置数据存储区首址MOVR7,#08H;设置累加循环次数,去掉最大值设置累加循环次数,去掉最大值C
39、LRA;清累加器清累加器LOOP:ADDA,R0;两数相加两数相加JNCNEXT;无进位,转无进位,转NEXTINCFLAG;有进位,进位位加有进位,进位位加1第三章第三章 常用控制程序设计常用控制程序设计NEXT:INCR0;数据指针加数据指针加1DJNZR7,LOOP;未加完,继续加未加完,继续加MOVR7,#03H;设置循环次数设置循环次数DIVIDE:MOVTEMP,A;保存累加器中的内容保存累加器中的内容MOVA,FLAG;累加结果除累加结果除2CLRCRRCAMOVFLAG,AMOVA,TEMPRRCADJNZR7,DIVIDE;未结束,继续执行未结束,继续执行MOVSAMP,A;
40、保存结果至保存结果至SAMP中中POPA;恢复现场恢复现场POPPSWRET返回本节第三章第三章 常用控制程序设计常用控制程序设计3.4标度变换程序设计标度变换程序设计对于一般的线性仪表而言,标度变换公式为:对于一般的线性仪表而言,标度变换公式为:为了简化程序设计,一般把被测参数的起点为了简化程序设计,一般把被测参数的起点A0所对应的所对应的A/D转换值设定为转换值设定为0,即,即N0=0,这样式(这样式(3-6)可以改写为:)可以改写为:返回本章首页第三章第三章 常用控制程序设计常用控制程序设计例例3-2某温度测量仪表的量程为某温度测量仪表的量程为100900,利用利用8031和和ADC08
41、09进行进行A/D转换。在某一时刻计算机采样并经过数转换。在某一时刻计算机采样并经过数字滤波后的的数字量为字滤波后的的数字量为0CDH求此时对应的温度值是多少求此时对应的温度值是多少?(设仪表的量程是线性的)?(设仪表的量程是线性的)解:由式(解:由式(3-7)可知,)可知,A0=100,Am=900,Nx=0CDH=(205)D,Nm=0FFH=(255)D,所以此时对应的温度为:所以此时对应的温度为:第三章第三章 常用控制程序设计常用控制程序设计标度变换程序清单:标度变换程序清单:BDCHAN:MOVSUB1_L,AM;INCAMMOVSUB1_H,AMMOVSUB2_L,A0INCA0M
42、OVSUB2_H,A0ACALLSUB2MOVMUL1_H,DIFF_HMOVMUL1_L,DIFF_LMOVSUB1_L,NX;第三章第三章 常用控制程序设计常用控制程序设计INCNXMOVSUB1_H,NXMOVSUB2_L,N0INCN0MOVSUB2_H,N0ACALLSUB2MOVMUL2_H,DIFF_HMOVMUL2_L,DIFF_LACALLMULTD;求求MOVDIV1_H,PR_HMOVDIV1_L,PR_LMOVSUB1_L,NM;第三章第三章 常用控制程序设计常用控制程序设计INCNMMOVSUB1_H,NMMOVSUB2_L,N0INCN0MOVSUB2_H,N0AC
43、ALLSUB2MOVDIV2_H,DIFF_HMOVDIV2_L,DIFF_LACALLDUBDIV;CLRCMOVA,DIV1_L第三章第三章 常用控制程序设计常用控制程序设计ADDCA,A0MOVAX,AINC A0MOVA,DIV1_HADDCA,A0MOVAX,A;RET第三章第三章 常用控制程序设计常用控制程序设计双字节减法子程序(双字节减法子程序(SUB2)双字节减法子程序(双字节减法子程序(SUB2)程序入口:被减数放在程序入口:被减数放在SUB1_H、SUB1_L单元中,减数放在单元中,减数放在SUB2_H、SUB2_L单元中;单元中;程序出口:差放在程序出口:差放在DIFF_
44、H、DIFF_L单元中。单元中。SUB2:CLRCMOVA,SUB1_L;ASUB1_LSUBBA,SUB2_L;低低8位相减位相减MOVDIFF_L,A;保存低保存低8位差值位差值MOVA,SUB1_H;ASUB1_HSUBBA,SUB2_H;高高8位相减位相减MOVDIFF_H,A;保存高保存高8位差值位差值RET第三章第三章 常用控制程序设计常用控制程序设计双字节无符号数除法(双字节无符号数除法(DUBDIV)程程序序入入口口:被被除除数数存存放放在在DIV1_H、DIV1_L单单元元中中,除除数数存存放放在在DIV2_H、DIV2_L单元中;单元中;程程序序出出口口:商商存存放放在在D
45、IV1_H、DIV1_L单单元元中中,余余数数存存放放在在L_L和和L_H单元中。单元中。DUBDIV:CLRA;余数单元清零余数单元清零MOVL_H,AMOVL_L,AMOVR0,#10H;设置除法移位次数设置除法移位次数LOOP:CLRC;移位移位MOVA,DIV1_L第三章第三章 常用控制程序设计常用控制程序设计RLCAMOVDIV1_L,AMOVA,DIV1_HRLCAMOV DIV1_H,AMOV A,L_LRLCAMOV L_L,AMOV A,L_HRLCAMOV L_H,AMOV PSW.5,C第三章第三章 常用控制程序设计常用控制程序设计LP1:MOVA,L_L;余数单元减除数
46、余数单元减除数SUBBA,DIV2_LMOVR1,AMOVA,L_HSUBBA,DIV2_HJBPSW.5ADD1JCSMALLADD1:MOVL_H,AMOVA,R1MOVL_L,AINCDIV1_L;商加一商加一SAMLL:DJNZR0,LOOP第三章第三章 常用控制程序设计常用控制程序设计MOV 20H,L_H;四舍五入四舍五入JB07H,ADD_D;商商 的的 最最 高高 位位 为为 1,则则 转转ADD_DCLRC;判断小数部分是否大于判断小数部分是否大于0.5MOV A,L_LRLCAMOV L_L,AMOV A,L_HRLCASUBB A,DIV2_H第三章第三章 常用控制程序设
47、计常用控制程序设计JCRETURN;小数部分小于小数部分小于0.5,退出,退出JNZADD1;小数部分大于小数部分大于0.5,则转,则转ADD_DMOV A,L_LSUBB A,DIV2_LJCRETURNADD_D:CLRC;商加一商加一INCDIV1_LMOV A,DIV1_HADDCA,#00HMOV DIV1_H,ARETURN:RET返回本节第三章第三章 常用控制程序设计常用控制程序设计3.5上下限报警处理程序设计上下限报警处理程序设计报警程序主要有以下几个步骤组成:报警程序主要有以下几个步骤组成:(1)采样被测参数。采样被测参数。(2)比较采样值和给定的上下限。比较采样值和给定的上
48、下限。(3)根据比较结果执行相应的处理程序。根据比较结果执行相应的处理程序。返回本章首页第三章第三章 常用控制程序设计常用控制程序设计例例3-3设设计计一一简简单单的的单单字字节节上上下下限限报报警警程程序序,当当采采样样值值超超出出上上、下下限限时时,分分别别执执行行相相应应的的报报警警处处理程序。理程序。设设上上限限报报警警值值存存放放在在Amax单单元元,下下限限报报警警值值存存放放在在Amin单元,采样值存放在单元,采样值存放在SAMP单元。单元。简单上下限报警程序程序清单如下:简单上下限报警程序程序清单如下:第三章第三章 常用控制程序设计常用控制程序设计.CLRC;清进位标志位清进位
49、标志位MOVA,Amax;读上限报警值读上限报警值SUBBA,SAMP;判断是否超过上限报警值判断是否超过上限报警值JCUPPER;超过上限,转报警处理程序超过上限,转报警处理程序MOVA,Amin;读下限报警值读下限报警值SUBBA,SAMP;判断是否超过下限报警值判断是否超过下限报警值JNCLOWER;超过下限,转报警处理程序超过下限,转报警处理程序UPPER:超上限处理程序。超上限处理程序。LOWER:超下限处理程序。超下限处理程序。第三章第三章 常用控制程序设计常用控制程序设计例例3-4设设计计一一报报警警处处理理程程序序。只只有有采采样样值值连连续续3次异常时,系统才进行报警处理。次
50、异常时,系统才进行报警处理。报警程序流程框图如图报警程序流程框图如图3-23所示。所示。第三章第三章 常用控制程序设计常用控制程序设计图图3-23报警程序流程框图报警程序流程框图第三章第三章 常用控制程序设计常用控制程序设计报警程序清单:报警程序清单:MOVNUM,#03HCHECK:CLRC;清进位标志位清进位标志位MOVA,Amax;读上限报警值读上限报警值SUBBA,SAMP;判断是否超过上限报警值判断是否超过上限报警值JCABNORMAL;超过上限,转超过上限,转ABNORMALMOVA,Amin;读下限报警值读下限报警值SUBBA,SAMP;判断是否超过下限报警值判断是否超过下限报警