⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数字滤波.asm.txt

📁 有用的单片机程序,包括8279和E2ROM的读写
💻 TXT
字号:
;*****************************************
;标号:LB
;功能:平均值滤波
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:A:平均值
;*****************************************
LB:     PUSH    1
        PUSH    3
        MOV     R0,#80H     ;数据区首地址
        MOV     R7,#10      ;数据区长度
        ACALL   ZJD         ;找极大值
        MOV     R0,#80H     ;数据区首地址
        MOV     R7,#10      ;数据区长度
        ACALL   ZJX         ;找极小值
        MOV     R0,#80H     ;数据区首地址
        MOV     R7,#10      ;数据区长度
        ACALL   QIUH        ;求和
        MOV     R1,32H      ;减去极大值
        ACALL   JIAN        
        MOV     R1,33H      ;减去极小值
        ACALL   JIAN    
        MOV     R1,#8
        ACALL   BDIV       ;求平均值
        MOV     A,R3
        POP     3
        POP     1
        RET
;**********************************
;功能:找极大值
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:32H:极大值
;**********************************
ZJD:                        ;找极大值
       PUSH    0
       PUSH    7
       PUSH    ACC
       MOV     A,@R0        ;读第一个数
       DEC     R7           ;循环次数
LOP:   INC     R0
       MOV     31H,@R0      ;读下一个数
       CJNE    A,31H,CHECK  ;数值比较
       SJMP    LOP1
CHECK: JNC     LOP1         ;A值大则转
       MOV     A,@R0        ;大数送A
LOP1:  DJNZ    R7,LOP       ;继续比较
       MOV     32H,A        ;最大值存32H
       POP     ACC
       POP     7
       POP     0
       RET
;**********************************
;功能:找极小值
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:33H:极小值
;**********************************
ZJX:
                           ;找极小值
       PUSH    0
       PUSH    7
       PUSH    ACC
       MOV     A,@R0       ;读第一个数
       DEC     R7          ;循环次数
LPP:   INC     R0
       MOV     31H,@R0     ;读下一个数
       CJNE    A,31H,CHK   ;数值比较
       SJMP    LOOP1
CHK:   JC      LOOP1       ;A值小则转
       MOV     A,@R0       ;小数送A
LOOP1: DJNZ    R7,LPP      ;继续比较
       MOV     33H,A       ;最小值存33H
       POP     ACC
       POP     7
       POP     0
       RET
;**********************************
;功能:求数据块之和
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:R2R3
;**********************************
QIUH:
       PUSH    0
       PUSH    7
       PUSH    ACC
       PUSH    PSW
       MOV     R2,#00H    ;累加和初始化
       MOV     R3,#00H
       CLR     C
JIA:   MOV     A,@R0      ;读第一个数
       INC     R0
       ADD     A,R3
       MOV     R3,A
       JNC     JX
       INC     R2
       CLR     C
JX:    DJNZ    R7, JIA
       POP     PSW
       POP     ACC
       POP     7
       POP     0
       RET
;**********************************
;功能:双字节减去单字节
;入口参数:R2R3,R1
;出口参数:R2R3
;**********************************
JIAN:  PUSH   ACC          ;R2R3-R1=>R2R3
       MOV    A,R3
       CLR    C
       SUBB   A,R1         ;减去减数
       MOV    R3,A
       JNC    FH
       DEC    R2
FH:    POP    ACC
       RET
;**********************************
;功能:双字节除以单字节
;入口参数:R2R3,R1
;出口参数:R3:商 R2:余数
;**********************************
BDIV:   PUSH  4
        PUSH  PSW
        MOV     R4,#8   ;R2R3/R1 = R3...R2
BDI:  	CLR     C
	MOV     A,R3
	RLC     A
     	MOV     R3,A
	MOV     A,R2
	RLC     A
	MOV     R2,A
	MOV     PSW.5,C         ;F0,C
	CLR     C
	SUBB    A,R1
	JB      PSW.5,BDIV1     ;F0,$+5
	JC      BDIV1+2         ;$+4
BDIV1:  MOV     R2,A
	INC     R3
	DJNZ    R4,BDI
	POP     PSW
        POP     4
	RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -