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

📄 推荐51程序库.txt

📁 很实用的一个C51单片机小程序库
💻 TXT
📖 第 1 页 / 共 3 页
字号:
[转帖]呕血推荐51程序库,希望大家能资源共享!!  主题:[转帖]呕血推荐51程序库,希望大家能资源共... - BBS3000 Internet 
      Explorer 
       当前位置  z-design  [转帖]呕血推荐51程序库,希望大家能资源共享!!

       ■ 回复数:0 ◆ 点击数:313 将此页发给您的朋友回复 收藏 打印 刷新 篇末 

       文章标题: [转帖]呕血推荐51程序库,希望大家能资源共享!!              


            HEBOBO 发表于 2003-5-10 16:29 侃单片机 

            呕血推荐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 

⌨️ 快捷键说明

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