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

📄 推荐51程序库.txt

📁 很实用的一个C51单片机小程序库
💻 TXT
📖 第 1 页 / 共 3 页
字号:
            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 
            MOV R5,B 
            MOV B,R6 
            MUL AB 
            ADD A,R5 
            MOV R5,A 
            CLR A 
            ADDC A,B 
            MOV R1,A 
            MOV A,R3 
            MOV B,R7 
            MUL AB 
            ADD A,R5 
            MOV R5,A 
            MOV A,B 
            ADDC A,R1 
            MOV R1,A 
            CLR A 
            ADDC A,#00H 
            XCH A,R3 
            MOV B,R6 
            MUL AB 
            ADD A,R1 
            MOV R1,A 
            MOV A,B 
            ADDC A,R3 
            XCH A,R5 
            MOV R3,A 
            MOV A,R2 
            MOV B,R7 
            MUL AB 
            ADD A,R1 
            MOV R1,A 
            MOV A,B 
            ADDC A,R5 
            MOV R5,A 
            CLR A 
            ADDC A,#00H 
            XCH A,R2 
            MOV B,R6 
            MUL AB 
            ADD A,R5 
            MOV R5,A 
            MOV A,B 
            ADDC A,R2 
            XCH A,R1 
            MOV R2,A 
            CLR OV 
            RET 

            ;N字节无符号数乘法程序 ([R0]*[R1])=([R0]) 
            ;入口 :R0,R1,M,N 
            ;占用资源:ACC,B,R2,R5,R6,R7,NCNT 
            ;堆栈需求:2字节 
            ;出口 :R0 

            NMULMN :MOV A,M 
            ADD A,R0 
            MOV R5,A 
            XCH A,R1 
            XCH A,R5 
            ADD A,N 
            XCH A,R0 
            MOV R6,A 
            MOV B,M 
            MOV NCNT,B 
            NMLMN1 :DEC R0 
            DEC R1 
            CLR A 
            XCH A,@R1 
            MOV @R0,A 
            DJNZ NCNT,NMLMN1 
            MOV NCNT,B 
            NMLMN2 :CLR A 
            XCH A,@R0 
            MOV R2,A 
            MOV A,R6 
            MOV R0,A 
            MOV A,R5 
            MOV R1,A 
            MOV R7,N 
            CLR C 
            NMLMN3 :MOV A,R2 
            MOV B,@R1 
            INC R1 
            MUL AB 
            ADDC A,@R0 
            MOV @R0,A 
            INC R0 
            MOV A,B 
            ADDC A,@R0 
            MOV @R0,A 
            DJNZ R7,NMLMN3 
            INC R0 
            INC R6 
            DJNZ NCNT,NMLMN2 
            MOV A,R0 
            CLR C 
            SUBB A,M 
            SUBB A,N 
            MOV R0,A 
            RET 

            ;单字节无符号除法程序 (R2R3R4/R7)=(R2)R3R4 余数R7 
            ;入口 :R2,R3,R4,R7 
            ;占用资源:ACC,B,F0 
            ;堆栈需求:3字节 
            ;出口 :(R2),R3,R4,R7,OV 

            NDIV31 :MOV A,R2 
            MOV B,R7 
            DIV AB 
            PUSH A 
            MOV R2,B 
            MOV B,#10H 
            NDV311 :CLR C 
            MOV A,R4 
            RLC A 
            MOV R4,A 
            MOV A,R3 
            RLC A 
            MOV R3,A 
            MOV A,R2 
            RLC A 
            MOV R2,A 
            MOV F0,C 
            CLR C 
            SUBB A,R7 
            JB F0,NDV312 
            JC NDV313 
            NDV312 :MOV R2,A 
            INC R4 
            NDV313 :DJNZ B,NDV311 
            POP A 
            CLR OV 
            JZ NDV314 
            SETB OV 
            NDV314 :XCH A,R2 
            MOV R7,A 
            RET 

            ;单字节无符号除法程序 (R5R2R3R4/R7)=(R5)R2R3R4 余数R7 
            ;入口 :R2,R3,R4,R7 
            ;占用资源:ACC,B,F0 
            ;堆栈需求:3字节 
            ;出口 :(R5),R2,R3,R4,R7,OV 

            NDIV41 :MOV A,R5 
            MOV B,R7 
            DIV AB 
            PUSH A 
            MOV R5,B 
            MOV B,#18H 
            NDV411 :CLR C 
            MOV A,R4 
            RLC A 
            MOV R4,A 
            MOV A,R3 
            RLC A 
            MOV R3,A 
            MOV A,R2 
            RLC A 
            MOV R2,A 
            MOV A,R5 
            RLC A 
            MOV R5,A 
            MOV F0,C 
            CLR C 
            SUBB A,R7 
            JB F0,NDV412 
            JC NDV413 
            NDV412 :MOV R5,A 
            INC R4 
            NDV413 :DJNZ B,NDV411 
            POP A 
            CLR OV 
            JZ NDV414 
            SETB OV 
            NDV414 :XCH A,R5 
            MOV R7,A 
            RET 

            ;双字节无符号除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余数R6R7 
            ;入口 :R5,R2,R3,R4,R6,R7 
            ;占用资源:ACC,B,F0 
            ;堆栈需求:4字节 
            ;出口 :(R2),R3,R4,R6,R7,OV 

            NDIV42 :MOV A,R1 
            PUSH A 
            MOV B,#00H 
            NDV421 :MOV A,R2 
            CLR C 
            SUBB A,R7 
            MOV R1,A 
            MOV A,R5 
            SUBB A,R6 
            JC NDV422 
            MOV R5,A 
            MOV A,R1 
            MOV R2,A 
            INC B 
            SJMP NDV421 
            NDV422 :PUSH B 
            MOV B,#10H 
            NDV423 :CLR C 
            MOV A,R4 
            RLC A 
            MOV R4,A 
            MOV A,R3 
            RLC A 
            MOV R3,A 
            MOV A,R2 
            RLC A 
            MOV R2,A 
            XCH A,R5 
            RLC A 
            XCH A,R5 
            MOV F0,C 
            CLR C 
            SUBB A,R7 
            MOV R1,A 
            MOV A,R5 
            SUBB A,R6 
            JB F0,NCV424 
            JC NDV425 
            NCV424 :MOV R5,A 
            MOV A,R1 
            MOV R2,A 
            INC R4 
            NDV425 :DJNZ B,NDV423 
            POP A 
            CLR OV 
            JNZ NDV426 
            SETB OV 
            NDV426 :XCH A,R2 
            MOV R7,A 
            MOV A,R5 
            MOV R6,A 
            POP A 
            MOV R1,A 
            RET 

            ;N字节无符号除法程序(组合) ([R0]/[R1])=([R0]) 
            ;入口 :R0,R1,M,N 
            ;占用资源:ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN 
            ;堆栈需求:4字节 
            ;出口 :R0 

            ;NDIVMN :MOV A,M 
            CLR C 
            SUBB A,N 
            MOV NCNT,A 
            ADD A,R0 
            MOV R4,A 
            XCH A,R0 
            MOV R3,A 
            MOV A,R1 
            MOV R5,A 
            MOV R2,#00H 
            NDVMN1 :MOV R7,N 
            LCALL NSUBN 
            MOV A,R5 
            MOV R1,A 
            JC NDVMN2 
            INC R2 
            SJMP NDVMN1 
            NDVMN2 :MOV R7,N 
            LCALL NADDN 
            MOV A,NCNT 
            SWAP A 
            RR A 
            MOV NCNT,A 
            NDVMN3 :MOV A,R3 
            MOV R0,A 
            MOV R7,M 
            LCALL NRLCN 
            MOV F0,C 
            MOV A,R4 
            MOV R0,A 
            MOV A,R5 
            MOV R1,A 
            MOV R7,N 
            LCALL NSUBN 
            JB F0,NDVMN4 
            JC NDVMN5 
            NDVMN4 :MOV A,R3 
            MOV R0,A 
            INC @R0 
            SJMP NDVMN6 
            NDVMN5 :MOV A,R5 
            MOV R1,A 
            MOV R7,N 
            LCALL NADDN 
            NDVMN6 :DJNZ NCNT,NDVMN3 
            MOV A,R4 
            MOV R1,A 
            MOV A,R2 
            MOV @R1,A 
            MOV A,R3 
            MOV R0,A 
            RET 

            ;N字节无符号除法程序(集成) ([R0]/R[1])=([R0]) 
            ;入口 :R0,R1,M,N 
            ;占用资源:ACC,R2,R3,R4,R5,R7,F0 
            ;堆栈需求:2字节 
            ;出口 :R0 

            NDIVMN :MOV A,M 
            CLR C 
            SUBB A,N 
            MOV B,A 
            ADD A,R0 
            MOV R4,A 
            XCH A,R0 
            MOV R3,A 
            MOV A,R1 
            MOV R5,A 
            MOV R2,#00H 
            NDVMN1 :MOV R7,N 
            CLR C 
            NDVMN2 :MOV A,@R0 
            SUBB A,@R1 
            MOV @R0,A 
            INC R0 
            INC R1 
            DJNZ R7,NDVMN2 
            MOV A,R4 
            MOV R0,A 
            MOV A,R5 
            MOV R1,A 
            JC NDVMN3 
            INC R2 
            SJMP NDVMN1 
            NDVMN3 :MOV R7,N 
            CLR C 
            NDVMN4 :MOV A,@R0 
            ADDC A,@R1 
            MOV @R0,A 
            INC R0 
            INC R1 
            DJNZ R7,NDVMN4 
            MOV A,#08H 
            MUL AB 
            MOV B,A 
            NDVMN5 :MOV A,R3 
            MOV R0,A 
            MOV R7,M 
            CLR C 
            NDVMN6 :MOV A,@R0 
            RLC A 
            MOV @R0,A 
            INC R0 
            DJNZ R7,NDVMN6 
            MOV F0,C 
            MOV A,R4 
            MOV R0,A 
            MOV A,R5 
            MOV R1,A 
            MOV R7,N 
            CLR C 
            NDVMN7 :MOV A,@R0 
            SUBB A,@R1 
            MOV @R0,A 
            INC R0 
            INC R1 
            DJNZ R7,NDVMN7 
            JB F0,NDVMNB 
            JC NDVMN8 
            NDVMNB :MOV A,R3 
            MOV R0,A 
            INC @R0 
            SJMP NDVMNA 
            NDVMN8 :MOV R7,N 
            MOV A,R4 
            MOV R0,A 
            MOV A,R5 
            MOV R1,A 
            CLR C 
            NDVMN9 :MOV A,@R0 
            ADDC A,@R1 
            MOV @R0,A 
            INC R0 
            INC R1 
            DJNZ R7,NDVMN9 
            NDVMNA :DJNZ B,NDVMN5 
            MOV A,M 
            CLR C 
            SUBB A,N 
            ADD A,R3 
            MOV R1,A 
            MOV A,R2 
            MOV @R1,A 
            MOV A,R3 
            MOV R0,A 
            RET 

            ;N字节数据左移程序 RLC([R0])=(CF[R0]) 
            ;入口 :R0,R7 
            ;占用资源:ACC,B 
            ;堆栈需求:2字节 
            ;出口 :R0,CF 

            NRLCN :MOV B,R0 
            CLR C 
            NRLN1 :MOV A,@R0 
            RLC A 
            MOV @R0,A 

⌨️ 快捷键说明

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