求出一段连续地址中的最大值和最小值

时间:2025-04-20

network1

LD SM0.0

MOVW 0, #MAX:LW6

AENO

MOVW 0, #MIN:LW8

network2

LD SM0.0

MOVD #Startadd:LD0, AC1

+D +2, AC1

network3

LD SM0.0

LPS

AW>= *AC1, *#Startadd:*LD0

MOVW *AC1, #MAX:LW6

AENO

MOVW *#Startadd:*LD0, #MIN:LW8

LPP

AW< *AC1, *#Startadd:*LD0

MOVW *#Startadd:*LD0, #MAX:LW6

AENO

MOVW *AC1, #MIN:LW8

network4

LD SM0.0

MOVW #Datalen:LW4, LW12

-I 1, LW12

network5

LD SM0.0

FOR #temp_i:LW10, 1, LW12

network6

LD SM0.0

LPS

AW>= *AC1, #MAX:LW6

MOVW *AC1, #MAX:LW6

LPP

AW< *AC1, #MIN:LW8

MOVW *AC1, #MIN:LW8

network7

LD SM0.0

+D 2, AC1

network8

NEXT

以上是我以前项目中写子程序,可以直接转换为LAD查看。功能就是求出一段连续地址中的最大值和最小值。注意for循环长度,太长有可能超时。

平均值程序很好写,就是累加之后再除一下。

这类程序都是逻辑非常简单的,建议楼主如果有时间的话还是自己写。

程序要求:先中值,随后进行“数据窗口平移”和“算术平均值”滤波。

“中值法””就是对采样得到的多个数据进行去掉最大值和最小值而取用中间数值的滤波方法。

“数据窗口平移法”是保证系统所处理的数据始终都是固定个数的最新数据,每当得到一个新数据就同时剔除一个较早的数据。本文取的数据窗口个数是8。

主程序

LD SM0.1

CALL SBR_0

LD SM0.0

CALL SBR_1

子程序SBR_0

//定于采样次数(次数×采样时间=平均值输出时间)

LD SM0.0

MOVW +10, VW0

//采样值存储器清零

LD SM0.0

FILL +0, VW2, 11

//这些都是对应的地址清零

LD SM0.0

MOVD +0, VD200

MOVD +0, VD204

MOVD +0, VD208

MOVD +0, VD212

MOVD +0, VD216

MOVD +0, VD308

MOVD +0, VD224

子程序SBR_2

//调出模拟信号

LD SM0.0

MOVW AIW0, VW200

//定义采样时间

LD SM0.0

AN T37

TON T37, 1

//将模拟量值存入表格

LD T37

ATT VW200, VW0

//将值转化为实数

LD SM0.0

ITD VW200, VD204

DTR VD204, VD208

MOVW VW2, VW300

//求采样和

LD T37

+R VD208, VD212

//采样次数到,求平均值,采样和前去采样第一次值 LDW> VW300, +9

ITD VW300, VD216

DTR VD216, VD220

MOVR VD212, VD224

/R VD220, VD224

FIFO VW0, VW306

ITD VW306, VD308

DTR VD308, VD312

-R VD312, VD212

//转换为整数输出

LD SM0.0

ROUND VD224, VD228

DTI VD228, VW232

求出一段连续地址中的最大值和最小值.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219