51单片机汇编程序集.docx
《51单片机汇编程序集.docx》由会员分享,可在线阅读,更多相关《51单片机汇编程序集.docx(45页珍藏版)》请在冰豆网上搜索。
![51单片机汇编程序集.docx](https://file1.bdocx.com/fileroot1/2022-11/16/33b4ad8e-e8cf-43ae-8d44-7fddafbda183/33b4ad8e-e8cf-43ae-8d44-7fddafbda1831.gif)
51单片机汇编程序集
51单片机汇编程序集
1、片内RAM初始化子程序
2、片外RAM初始化子程序
3、片外RAM初始化子程序(双字节个单元)
4、内部RAM数据复制程序
5、外部RAM数据复制程序
6、外部RAM数据复制程序
7、外部RAM数据复制到内部RAM程序
8、限幅滤波程序
9、中位值滤波程序
10、N点算术平均滤波
;片内RAM初始化子程序
IBCLR:
MOVA,R0
MOVR1,A
CLRA
IBC1:
MOV@R1,A
INCR1
DJNZR7,IBC1
RET
;片外RAM初始化子程序
EBCLR1:
MOVA,ADDPL
MOVDPL,A
MOVA,ADDPH
MOVDPH,A
CLRC
EBC11:
MOVX@DPTR,A
INCDPTR
DJNZR7,EBC11
RET
;片外RAM初始化子程序(双字节个单元)
EBCLR2:
MOVA,ADDPL
MOVDPL,A
MOVA,ADDPH
MOVDPH,A
MOVA,R7
JZEBC21
INCR6
EBC21:
CLRA
MOVX@DPTR,A
INCDPTR
DJNZR7,EBC21
DJNZR6,EBC21
RET
;内部RAM数据复制程序
;入口:
R0,R7
;占用资源:
A
;堆栈需求:
2字节
;出口:
R1
IBMOV:
MOVA,R0
ADDA,R7
MOVR0,A
MOVA,R1
ADDA,R7
MOVR1,A
IBM1:
DECR0
DECR1
MOVA,@R0
MOV@R1,A
DJNZR7,IBM1
RET
;外部RAM数据复制程序
;入口:
ADDPH,ADDPL,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口:
R0,R1
EBMOV1:
MOVA,ADDPL
ADDA,R7
MOVDPL,A
CLRA
ADDCA,ADDPH
MOVDPH,A
MOVA,R7
ADDA,R1
XCHA,R0
ADDCA,#00H
MOVP2,A
EBM11:
DECR0
CJNER0,#0FFH,EBM12
DECP2
EBM12:
DECDPL
MOVA,DPL
CJNEA,#0FFH,EBM13
DECDPH
EBM13:
MOVXA,@R0
MOVX@DPTR,A
DJNZR7,EBM11
RET
;外部RAM数据复制程序
;入口:
ADDPH,ADDPL,R6,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口:
R0,R1
EBMOV2:
MOVA,ADDPL
ADDA,R7
MOVDPL,A
MOVA,R6
ADDCA,ADDPH
MOVDPH,A
MOVA,R7
ADDA,R1
XCHA,R0
ADDCA,R6
MOVP2,A
MOVA,R7
JZEBM21
INCR6
EBM21:
DECR0
CJNER0,#0FFH,EBM22
DECP2
EBM22:
DECDPL
MOVA,DPL
CJNEA,#0FFH,EBM23
DECDPH
EBM23:
MOVXA,@R0
MOVX@DPTR,A
DJNZR7,EBM21
DJNZR6,EBM21
RET
;外部RAM数据复制到内部RAM程序
;入口:
ADDPH,ADDPL,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口:
R0
ITEMOV:
MOVA,ADDPL
ADDA,R7
MOVDPL,A
MOVA,ADDPH
ADDCA,#00H
MOVDPH,A
MOVA,R0
ADDA,R7
MOVR0,A
ITEM1:
DECR0
DECDPL
MOVA,DPL
CJNEA,#0FFH,ITEM2
DECDPH
ITEM2:
MOVXA,@DPTR
MOV@R0,A
DJNZR7,ITEM1
RET
;限幅滤波程序
;入口:
A,SDAT,DELTY
;占用资源:
B
;堆栈需求:
2字节
;出口:
A
JUGFILT:
MOVB,A
CLRC
SUBBA,SDAT
JNCJUGFT1
CPLA
INCA
JUGFT1:
SETBA
SUBBA,#DELTY
JNCJUGFT3
MOVA,SDAT
RET
JUGFT3:
MOVA,B
MOVSDAT,A
RET
;中位值滤波程序
;入口:
ADDPH,ADDPL,N
;占用资源:
ESELSORT
;堆栈需求:
4字节
;出口:
A
MEDFILT:
LCALLESELSORT
MOVA,N
CLRC
RRCA
ADDA,ADDPL
MOVDPL,A
MOVA,ADDPH
MOVDPH,A
JNCMEDFT1
INCDPH
MEDFT1:
MOVXA,@DPTR
RET
;N点算术平均滤波
;入口:
ADDPH,ADDPL,N
;占用资源:
B,R3,R4
;堆栈需求:
2字节
;出口:
A
AVFILT:
MOVA,ADDPL
MOVDPL,A
MOVA,ADDPH
MOVDPH,A
CLRA
MOVR3,A
MOVR4,A
MOVR7,N
AVFT1:
MOVXA,@DPTR
INCDPTR
ADDA,R4
MOVR4,A
JNCAVFT2
INCR3
AVFT2:
DJNZR7,AVFT1
MOVR7,N
MOVR2,#00H
LCALLNDIV31
MOVA,R4
RET
11、N点加权平均滤波
12、一阶加权滞后滤波程序
13、双字节取补程序
14、N节取补程序
15、双字节无符号数加法程序
16、N字节无符号数加法程序
17、双字节无符号数减法程序
18、N字节无符号数减法程序
19、单字节无符号数乘法程序
20、单字节无符号数乘法程序
;N点加权平均滤波
;入口:
ADDPH,ADDPL,N
;占用资源:
B,R3,R4
;堆栈需求:
2字节
;出口:
A
QAVFILT:
CLRA
MOVR3,A
MOVR4,A
MOVR7,N
MOVP2,ADDPH
MOVR1,ADDPL
MOVDPTR,#QAVTAB
QAVFT1:
MOVCA,@A+DPTR
MOVB,A
MOVXA,@R1
INCDPTR
INCR1
MULAB
ADDA,R4
MOVR4,A
MOVA,B
ADDCA,R3
MOVR3,A
DJNZR7,QAVFT1
MOVA,R4
JNBACC.7,QAVFT2
INCR3
QAVFT2:
MOVA,R3
RET
QAVTAB:
DB
;一阶加权滞后滤波程序
;入口:
A,DELTY
;占用资源:
B,R3,R4
;堆栈需求:
2字节
;出口:
A
BQFILT:
MOVB,A
CLRA
MOVDPTR,#ABTAB
MOVCA,@A+DPTR
MULAB
MOVR4,A
MOVR3,B
MOVA,#01H
MOVCA,@A+DPTR
MOVB,DELTY
MULAB
ADDA,R4
MOVR4,A
MOVA,B
ADDCA,R3
MOVR3,A
MOVA,R4
JNBACC.7,FT1
INCR3
FT1:
MOVA,R3
MOVDELTY,A
RET
BQTAB:
DB80H,80H
;双字节取补程序/(R3R4)=(R3R4)
;入口:
R3,R4
;占用资源:
ACC
;堆栈需求:
2字节
;出口:
R3,R4
CMPT:
MOVA,R4
CPLA
ADDA,#01H
MOVR4,A
MOVA,R3
CPLA
ADDCA,#00H
MOVR3,A
RET
;N节取补程序/([R0])=([R0])
;入口:
R0,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口:
R0
NCMPTN:
MOVB,R0
SETBC
NCPT1:
MOVA,@R0
CPLA
ADDCA,#00H
MOV@R0,A
INCR0
DJNZR7,NCPT1
MOVR0,B
RET
;双字节无符号数加法程序(R3R4+R6R7)=(R3R4)
;入口:
R3,R4,R6,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口:
R3,R4,CF
NADD:
MOVA,R4
ADDA,R7
MOVR4,A
MOVA,R3
ADDCA,R6
MOVR3,A
RET
;N字节无符号数加法程序([R0]+[R1])=([R0])
;入口:
R0,R1,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口:
R0,CF
NADDN:
MOVB,R0
CLRC
NADN1:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR7,NADN1
MOVR0,B
RET
;双字节无符号数减法程序(R3R4-R6R7)=(R3R4)
;入口:
R3,R4,R6,R7
;占用资源:
ACC
;堆栈需求:
2字节
;出口:
R3,R4
NSUB:
MOVA,R4
CLRC
SUBBA,R7
MOVR4,A
MOVA,R3
SUBBA,R6
MOVR3,A
RET
;N字节无符号数减法程序([R0]-[R1])=([R0])
;入口:
R0,R1,R7
;占用资源:
ACC,B
;堆栈需求:
2字节
;出口: