51程序集.docx
- 文档编号:5060492
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:28
- 大小:18.93KB
51程序集.docx
《51程序集.docx》由会员分享,可在线阅读,更多相关《51程序集.docx(28页珍藏版)》请在冰豆网上搜索。
51程序集
片内RAM初始化子程序
IBCLR :
MOV A,R0
MOV R1,A
CLR A
IBC1 :
MOV @R1,A
INC R1
DJNZ R7,IBC1
RET
;片外RAM初始化子程序
EBCLR1 :
MOV A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
CLR C
EBC11 :
MOVX @DPTR,A
INC DPTR
DJNZ R7,EBC11
RET
;片外RAM初始化子程序(双字节个单元)
EBCLR2 :
MOV A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
MOV A,R7
JZ EBC21
INC R6
EBC21 :
CLR A
MOVX @DPTR,A
INC DPTR
DJNZ R7,EBC21
DJNZ R6,EBC21
RET
;内部RAM数据复制程序
;入口 :
R0,R7
;占用资源:
A
;堆栈需求:
2字节
;出口 :
R1
IBMOV :
MOV A,R0
ADD A,R7
MOV R0,A
MOV A,R1
ADD A,R7
MOV R1,A
IBM1 :
DEC R0
DEC R1
MOV A,@R0
MOV @R1,A
DJNZ R7,IBM1
RET
;外部RAM数据复制程序
;入口 :
ADDPH,ADDPL,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口 :
R0,R1
EBMOV1 :
MOV A,ADDPL
ADD A,R7
MOV DPL,A
CLR A
ADDC A,ADDPH
MOV DPH,A
MOV A,R7
ADD A,R1
XCH A,R0
ADDC A,#00H
MOV P2,A
EBM11 :
DEC R0
CJNE R0,#0FFH,EBM12
DEC P2
EBM12 :
DEC DPL
MOV A,DPL
CJNE A,#0FFH,EBM13
DEC DPH
EBM13 :
MOVX A,@R0
MOVX @DPTR,A
DJNZ R7,EBM11
RET
;外部RAM数据复制程序
;入口 :
ADDPH,ADDPL,R6,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口 :
R0,R1
EBMOV2 :
MOV A,ADDPL
ADD A,R7
MOV DPL,A
MOV A,R6
ADDC A,ADDPH
MOV DPH,A
MOV A,R7
ADD A,R1
XCH A,R0
ADDC A,R6
MOV P2,A
MOV A,R7
JZ EBM21
INC R6
EBM21 :
DEC R0
CJNE R0,#0FFH,EBM22
DEC P2
EBM22 :
DEC DPL
MOV A,DPL
CJNE A,#0FFH,EBM23
DEC DPH
EBM23 :
MOVX A,@R0
MOVX @DPTR,A
DJNZ R7,EBM21
DJNZ R6,EBM21
RET
;外部RAM数据复制到内部RAM程序
;入口 :
ADDPH,ADDPL,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口 :
R0
ITEMOV :
MOV A,ADDPL
ADD A,R7
MOV DPL,A
MOV A,ADDPH
ADDC A,#00H
MOV DPH,A
MOV A,R0
ADD A,R7
MOV R0,A
ITEM1 :
DEC R0
DEC DPL
MOV A,DPL
CJNE A,#0FFH,ITEM2
DEC DPH
ITEM2 :
MOVX A,@DPTR
MOV @R0,A
DJNZ R7,ITEM1
RET
;限幅滤波程序
;入口 :
A,SDAT,DELTY
;占用资源:
B
;堆栈需求:
2字节
;出口 :
A
JUGFILT :
MOV B,A
CLR C
SUBB A,SDAT
JNC JUGFT1
CPL A
INC A
JUGFT1 :
SETB A
SUBB A,#DELTY
JNC JUGFT3
MOV A,SDAT
RET
JUGFT3 :
MOV A,B
MOV SDAT,A
RET
;中位值滤波程序
;入口 :
ADDPH,ADDPL,N
;占用资源:
ESELSORT
;堆栈需求:
4字节
;出口 :
A
MEDFILT :
LCALL ESELSORT
MOV A,N
CLR C
RRC A
ADD A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
JNC MEDFT1
INC DPH
MEDFT1 :
MOVX A,@DPTR
RET
;N点算术平均滤波
;入口 :
ADDPH,ADDPL,N
;占用资源:
B,R3,R4
;堆栈需求:
2字节
;出口 :
A
AVFILT:
MOV A,ADDPL
MOV DPL,A
MOV A,ADDPH
MOV DPH,A
CLR A
MOV R3,A
MOV R4,A
MOV R7,N
AVFT1 :
MOVX A,@DPTR
INC DPTR
ADD A,R4
MOV R4,A
JNC AVFT2
INC R3
AVFT2 :
DJNZ R7,AVFT1
MOV R7,N
MOV R2,#00H
LCALL NDIV31
MOV A,R4
RET
;N点加权平均滤波
;入口 :
ADDPH,ADDPL,N
;占用资源:
B,R3,R4
;堆栈需求:
2字节
;出口 :
A
QAVFILT :
CLR A
MOV R3,A
MOV R4,A
MOV R7,N
MOV P2,ADDPH
MOV R1,ADDPL
MOV DPTR,#QAVTAB
QAVFT1 :
MOVC A,@A+DPTR
MOV B,A
MOVX A,@R1
INC DPTR
INC R1
MUL AB
ADD A,R4
MOV R4,A
MOV A,B
ADDC A,R3
MOV R3,A
DJNZ R7,QAVFT1
MOV A,R4
JNB ACC.7,QAVFT2
INC R3
QAVFT2 :
MOV A,R3
RET
QAVTAB :
DB
;一阶加权滞后滤波程序
;入口 :
A,DELTY
;占用资源:
B,R3,R4
;堆栈需求:
2字节
;出口 :
A
BQFILT :
MOV B,A
CLR A
MOV DPTR,#ABTAB
MOVC A,@A+DPTR
MUL AB
MOV R4,A
MOV R3,B
MOV A,#01H
MOVC A,@A+DPTR
MOV B,DELTY
MUL AB
ADD A,R4
MOV R4,A
MOV A,B
ADDC A,R3
MOV R3,A
MOV A,R4
JNB ACC.7,FT1
INC R3
FT1 :
MOV A,R3
MOV DELTY,A
RET
BQTAB :
DB 80H,80H
;双字节取补程序/(R3R4)=(R3R4)
;入口 :
R3,R4
;占用资源:
ACC
;堆栈需求:
2字节
;出口 :
R3,R4
CMPT :
MOV A,R4
CPL A
ADD A,#01H
MOV R4,A
MOV A,R3
CPL A
ADDC A,#00H
MOV R3,A
RET
;N节取补程序/([R0])=([R0])
;入口 :
R0,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R0
NCMPTN :
MOV B,R0
SETB C
NCPT1 :
MOV A,@R0
CPL A
ADDC A,#00H
MOV @R0,A
INC R0
DJNZ R7,NCPT1
MOV R0,B
RET
;双字节无符号数加法程序(R3R4+R6R7)=(R3R4)
;入口 :
R3,R4,R6,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口 :
R3,R4,CF
NADD :
MOV A,R4
ADD A,R7
MOV R4,A
MOV A,R3
ADDC A,R6
MOV R3,A
RET
;N字节无符号数加法程序([R0]+[R1])=([R0])
;入口 :
R0,R1,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R0,CF
NADDN :
MOV B,R0
CLR C
NADN1 :
MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,NADN1
MOV R0,B
RET
;双字节无符号数减法程序(R3R4-R6R7)=(R3R4)
;入口 :
R3,R4,R6,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口 :
R3,R4
NSUB :
MOV A,R4
CLR C
SUBB A,R7
MOV R4,A
MOV A,R3
SUBB A,R6
MOV R3,A
RET
;N字节无符号数减法程序([R0]-[R1])=([R0])
;入口 :
R0,R1,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R0,CF
NSUBN :
MOV B,R0
MOV R7,N
CLR C
NSUBN1 :
MOV A,@R0
SUBB A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,NSUBN1
MOV R0,B
RET
;单字节无符号数乘法程序(R3R4*R7)=(R2R3R4)
;入口 :
R3,R4,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R2,R3,R4
NMUL21 :
MOV A,R4
MOV B,R7
MUL AB
MOV R4,A
MOV A,B
XCH A,R3
MOV B,R7
MUL AB
ADD A,R3
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
CLR OV
RET
;单字节无符号数乘法程序(R2R3R4*R7)=(R5R2R3R4)
;入口 :
R2,R3,R4,R6,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R5,R2,R3,R4
NMUL31 :
MOV A,R4
MOV B,R7
MUL AB
MOV R4,A
MOV A,B
XCH A,R3
MOV B,R7
MUL AB
ADD A,R3
MOV R3,A
CLR A
ADDC A,B
XCH A,R2
MOV B,R7
MUL AB
ADD A,R2
MOV R2,A
CLR A
ADDC A,B
MOV R5,A
CLR OV
RET
;单字节无符号数乘法程序(R5R2R3R4*R7)=(R7R5R2R3R4)
;入口 :
R5,R2,R3,R4,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R7,R5,R2,R3,R4
NMUL41 :
MOV A,R4
MOV B,R7
MUL AB
MOV R4,A
MOV A,B
XCH A,R3
MOV B,R7
MUL AB
ADD A,R3
MOV R3,A
CLR A
ADDC A,B
XCH A,R2
MOV B,R7
MUL AB
ADD A,R2
MOV R2,A
CLR A
ADDC A,B
XCH A,R5
MOV B,R7
MUL AB
ADD A,R5
MOV R5,A
CLR A
ADDC A,B
MOV R7,A
CLR OV
RET
;双字节无符号数乘法程序(R3R4*R6R7)=(R5R2R3R4)
;入口 :
R3,R4,R6,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R5,R2,R3,R4
NMUL22 :
MOV A,R4
MOV B,R7
MUL AB
XCH A,R4
MOV R5,B
MOV B,R6
MUL AB
ADD A,R5
MOV R5,A
CLR A
ADDC A,B
MOV R2,A
MOV A,R3
MOV B,R7
MUL AB
ADD A,R5
MOV R5,A
MOV A,B
ADDC A,R2
MOV R2,A
CLR A
ADDC A,#00H
XCH A,R3
MOV B,R6
MUL AB
ADD A,R2
MOV R2,A
MOV A,B
ADDC A,R3
XCH A,R5
MOV R3,A
CLR OV
RET
;双字节无符号数乘法程序(R2R3R4*R6R7)=(R1R5R2R3R4)
;入口 :
R2,R3,R4,R6,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口 :
R1,R5,R2,R3,R4
NMUL32 :
MOV A,R4
MOV B,R7
MUL AB
XCH A,R4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 程序