您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 51单片机汇编程序集
1、片内RAM初始化子程序2、片外RAM初始化子程序3、片外RAM初始化子程序(双字节个单元)4、内部RAM数据复制程序5、外部RAM数据复制程序6、外部RAM数据复制程序7、外部RAM数据复制到内部RAM程序8、限幅滤波程序9、中位值滤波程序10、N点算术平均滤波11、N点加权平均滤波12、一阶加权滞后滤波程序13、双字节取补程序14、N节取补程序15、双字节无符号数加法程序16、N字节无符号数加法程序17、双字节无符号数减法程序18、N字节无符号数减法程序19、单字节无符号数乘法程序20、单字节无符号数乘法程序21、单字节无符号数乘法程序22、双字节无符号数乘法程序23、双字节无符号数乘法程序24、N字节无符号数乘法程序25、单字节无符号除法程序26、单字节无符号除法程序27、双字节无符号除法程序28、N字节无符号除法程序(组合)29、N字节无符号除法程序30、N字节数据左移程序31、原码有符号双字节减法程序32、原码有符号双字节加法程序33、原码有符号双字节乘法程序34、原码有符号双字节除法程序35、单字节顺序查找程序36、单字节顺序查找程序37、双字节字符串顺序查找程序38、双字节字符串顺序查找程序39、N字节字符串顺序查找程序40、单字节最值查找程序41、浮点数顺序查找程序42、浮点数最值查找程序43、单字节折半查找程序;片内RAM初始化子程序IBCLR:MOVA,R0MOVR1,ACLRAIBC1:MOV@R1,AINCR1DJNZR7,IBC1RET;片外RAM初始化子程序EBCLR1:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,ACLRCEBC11:MOVX@DPTR,AINCDPTRDJNZR7,EBC11RET;片外RAM初始化子程序(双字节个单元)EBCLR2:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,AMOVA,R7JZEBC21INCR6EBC21:CLRAMOVX@DPTR,AINCDPTRDJNZR7,EBC21DJNZR6,EBC21RET;内部RAM数据复制程序;入口:R0,R7;占用资源:A;堆栈需求:2字节;出口:R1IBMOV:MOVA,R0ADDA,R7MOVR0,AMOVA,R1ADDA,R7MOVR1,AIBM1:DECR0DECR1MOVA,@R0MOV@R1,ADJNZR7,IBM1RET;外部RAM数据复制程序;入口:ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口:R0,R1EBMOV1:MOVA,ADDPLADDA,R7MOVDPL,ACLRAADDCA,ADDPHMOVDPH,AMOVA,R7ADDA,R1XCHA,R0ADDCA,#00HMOVP2,AEBM11:DECR0CJNER0,#0FFH,EBM12DECP2EBM12:DECDPLMOVA,DPLCJNEA,#0FFH,EBM13DECDPHEBM13:MOVXA,@R0MOVX@DPTR,ADJNZR7,EBM11RET;外部RAM数据复制程序;入口:ADDPH,ADDPL,R6,R7;占用资源:ACC;堆栈需求:2字节;出口:R0,R1EBMOV2:MOVA,ADDPLADDA,R7MOVDPL,AMOVA,R6ADDCA,ADDPHMOVDPH,AMOVA,R7ADDA,R1XCHA,R0ADDCA,R6MOVP2,AMOVA,R7JZEBM21INCR6EBM21:DECR0CJNER0,#0FFH,EBM22DECP2EBM22:DECDPLMOVA,DPLCJNEA,#0FFH,EBM23DECDPHEBM23:MOVXA,@R0MOVX@DPTR,ADJNZR7,EBM21DJNZR6,EBM21RET;外部RAM数据复制到内部RAM程序;入口:ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口:R0ITEMOV:MOVA,ADDPLADDA,R7MOVDPL,AMOVA,ADDPHADDCA,#00HMOVDPH,AMOVA,R0ADDA,R7MOVR0,AITEM1:DECR0DECDPLMOVA,DPLCJNEA,#0FFH,ITEM2DECDPHITEM2:MOVXA,@DPTRMOV@R0,ADJNZR7,ITEM1RET;限幅滤波程序;入口:A,SDAT,DELTY;占用资源:B;堆栈需求:2字节;出口:AJUGFILT:MOVB,ACLRCSUBBA,SDATJNCJUGFT1CPLAINCAJUGFT1:SETBASUBBA,#DELTYJNCJUGFT3MOVA,SDATRETJUGFT3:MOVA,BMOVSDAT,ARET;中位值滤波程序;入口:ADDPH,ADDPL,N;占用资源:ESELSORT;堆栈需求:4字节;出口:AMEDFILT:LCALLESELSORTMOVA,NCLRCRRCAADDA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,AJNCMEDFT1INCDPHMEDFT1:MOVXA,@DPTRRET;N点算术平均滤波;入口:ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2字节;出口:AAVFILT:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,ACLRAMOVR3,AMOVR4,AMOVR7,NAVFT1:MOVXA,@DPTRINCDPTRADDA,R4MOVR4,AJNCAVFT2INCR3AVFT2:DJNZR7,AVFT1MOVR7,NMOVR2,#00HLCALLNDIV31MOVA,R4RET;N点加权平均滤波;入口:ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2字节;出口:AQAVFILT:CLRAMOVR3,AMOVR4,AMOVR7,NMOVP2,ADDPHMOVR1,ADDPLMOVDPTR,#QAVTABQAVFT1:MOVCA,@A+DPTRMOVB,AMOVXA,@R1INCDPTRINCR1MULABADDA,R4MOVR4,AMOVA,BADDCA,R3MOVR3,ADJNZR7,QAVFT1MOVA,R4JNBACC.7,QAVFT2INCR3QAVFT2:MOVA,R3RETQAVTAB:DB;一阶加权滞后滤波程序;入口:A,DELTY;占用资源:B,R3,R4;堆栈需求:2字节;出口:ABQFILT:MOVB,ACLRAMOVDPTR,#ABTABMOVCA,@A+DPTRMULABMOVR4,AMOVR3,BMOVA,#01HMOVCA,@A+DPTRMOVB,DELTYMULABADDA,R4MOVR4,AMOVA,BADDCA,R3MOVR3,AMOVA,R4JNBACC.7,FT1INCR3FT1:MOVA,R3MOVDELTY,ARETBQTAB:DB80H,80H;双字节取补程序/(R3R4)=(R3R4);入口:R3,R4;占用资源:ACC;堆栈需求:2字节;出口:R3,R4CMPT:MOVA,R4CPLAADDA,#01HMOVR4,AMOVA,R3CPLAADDCA,#00HMOVR3,ARET;N节取补程序/([R0])=([R0]);入口:R0,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R0NCMPTN:MOVB,R0SETBCNCPT1:MOVA,@R0CPLAADDCA,#00HMOV@R0,AINCR0DJNZR7,NCPT1MOVR0,BRET;双字节无符号数加法程序(R3R4+R6R7)=(R3R4);入口:R3,R4,R6,R7;占用资源:ACC;堆栈需求:2字节;出口:R3,R4,CFNADD:MOVA,R4ADDA,R7MOVR4,AMOVA,R3ADDCA,R6MOVR3,ARET;N字节无符号数加法程序([R0]+[R1])=([R0]);入口:R0,R1,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R0,CFNADDN:MOVB,R0CLRCNADN1:MOVA,@R0ADDCA,@R1MOV@R0,AINCR0INCR1DJNZR7,NADN1MOVR0,BRET;双字节无符号数减法程序(R3R4-R6R7)=(R3R4);入口:R3,R4,R6,R7;占用资源:ACC;堆栈需求:2字节;出口:R3,R4NSUB:MOVA,R4CLRCSUBBA,R7MOVR4,AMOVA,R3SUBBA,R6MOVR3,ARET;N字节无符号数减法程序([R0]-[R1])=([R0]);入口:R0,R1,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R0,CFNSUBN:MOVB,R0MOVR7,NCLRCNSUBN1:MOVA,@R0SUBBA,@R1MOV@R0,AINCR0INCR1DJNZR7,NSUBN1MOVR0,BRET;单字节无符号数乘法程序(R3R4*R7)=(R2R3R4);入口:R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R2,R3,R4NMUL21:MOVA,R4MOVB,R7MULABMOVR4,AMOVA,BXCHA,R3MOVB,R7MULABADDA,R3MOVR3,ACLRAADDCA,BMOVR2,ACLROVRET;单字节无符号数乘法程序(R2R3R4*R7)=(R5R2R3R4);入口:R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R5,R2,R3,R4NMUL31:MOVA,R4MOVB,R7MULABMOVR4,AMOVA,BXCHA,R3MOVB,R7MULABADDA,R3MOVR3,ACLRAADDCA,BXCHA,R2MOVB,R7MULABADDA,R2MOVR2,ACLRAADDCA,BMOVR5,ACLROVRET;单字节无符号数乘法程序(R5R2R3R4*R7)=(R7R5R2R3R4);入口:R5,R2,R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R7,R5,R2,R3,R4NMUL41:MOVA,R4MOVB,R7MULABMOVR4,AMOVA,BXCHA,R3MOVB,R7MULABADDA,R3MOVR3,ACLRAADDCA,BXCHA,R2MOVB,R7MULABADDA,R2MOVR2,ACLRAADDCA,BXCHA,R5MOVB,R7MULABADDA,R5MOVR5,ACLRAADDCA,BMOVR7,ACLROVRET;双字节无符号数乘法程序(R3R4*R6R7)=(R5R2R3R4);入口:R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R5,R2,R3,R4NMUL22:MOVA,R4MOVB,R7MULABXCHA,R4MOVR5,BMOVB,R6MULABADDA,R5MOVR5,ACLRAADDCA,BMOVR2,AMOVA,R3MOVB,R7MULABADDA,R5MOVR5,AMOVA,BADDCA,R2MOVR2,ACLRAADDCA,#00HXCHA,R3MOVB,R6MULABADDA,R2MOVR2,AMOVA,BADDCA,R3XCHA,R5MOVR3,ACLROVRET;双字节无符号数乘法程序(R2R3R4*R6R7)=(R1R5R2R3R4);入口:R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口:R1,R5,R2,R3,R4NMUL32:MOVA,R4MOVB,R7MULABXCHA,R4MOVR5,BMOVB,R6MULABADDA,R5MOVR5,ACLRAADDCA,BMOVR1,AMOVA,R3MOVB,R7MULABADDA,R5MOVR5,AMOVA,BADDCA,R1MOVR1,ACLRAADDCA,#00HXCHA,R3MOVB,R6MULABADDA,R1MOVR1,AMOVA,BADDCA,R3XCHA,R5MOVR3,A
本文标题:51单片机汇编程序集
链接地址:https://www.777doc.com/doc-5236593 .html