单片机流水灯汇编程序设计开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
程序A:;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#01111111B ;最下面的LED点亮LCALL DELAY;延时1秒MOV P1,#10111111B ;最下面第二个的LED点亮LCALL DELAY;延时1秒MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#11101111BLCALL DELAYMOV P1,#11110111BLCALL DELAYMOV P1,#11111011BLCALL DELAYMOV P1,#11111101BLCALL DELAYMOV P1,#11111110BLCALL DELAYMOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETEND程序B:;用移位方式实现流水灯org 00h ;程序上电从00h开始ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成11111110loop:mov p1,a ;将A送到P1口,发光二极管低电平点亮lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。
ORG 0;程序从0地址开始START: MOV A,#0FEH ;让ACC的内容为11111110LOOP: MOV P2,A ;让P2口输出ACC的内容RR A;让ACC的内容左移CALL DELAY ;调用延时子程序LJMP LOOP ;跳到LOOP处执行;0.1秒延时子程序(12MHz晶振)===================DELAY: MOV R7,#200 ;R7寄存器加载200次数D1: MOV R6,#250 ;R6寄存器加载250次数DJNZ R6,$ ;本行执行R6次DJNZ R7,D1 ;D1循环执行R7次RET;返回主程序END;结束程序开关控制的单片机流水灯汇编在单片机控制下,用一个拨动开关K1,控制8个发光二极管L1-L8,发光的时间间隔为0.5秒。
具体要求:当拨动开关K1发出低电平(K1=0)时,L1-L8从两头向中间逐个点亮,当L1-L8全部点亮后延时2秒钟全部熄灭,如此往复循环。
当拨动开关K1发出高电平(K1=1)时,中间的L4、L5点亮,然后点亮的灯向两边扩展,直到L1-L8全部点亮后延时2秒钟全部熄灭,如此往复循环。
悬赏分:20 - 解决时间:2009-12-21 13:42提问者: ---------最佳答案:;--------------------------------------------下列程序,经过了编译、仿真,可以满足要求。
;--------------------------------------------ORG 0000HMOV R2, #0M_LOOP:MOV A, R2INC R2ANL A, #07HMOV C, P1.0MOV ACC.3, CMOV DPTR, #TABMOVC A, @A + DPTRMOV P0, ACALL DL5KTSJMP M_LOOP;--------------------------------------------TAB:DB 0xFF, 0xE7, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00DB 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00;--------------------------------------------DL5KT:mov R5, #10MOV R6, #100MOV R7, #250DJNZ R7, $DJNZ R6, $ - 4DJNZ R5, $ - 8RET;--------------------------------------------END流水灯汇编程序8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#01111111B ;最下面的LED点亮LCALL DELAY ;延时1秒MOV P1,#10111111B ;最下面第二个的LED点亮LCALL DELAY ;延时1秒MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#11101111BLCALL DELAYMOV P1,#11110111BLCALL DELAYMOV P1,#11111011BLCALL DELAYMOV P1,#11111101BLCALL DELAYMOV P1,#11111110BLCALL DELAYMOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250msPUSH PSW ;现场保护指令(有时可以不加)MOV R4,#2L3: MOV R2 ,#00HL1: MOV R3 ,#00HL2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)DJNZ R2 ,L1 ; 中层循环:256次DJNZ R4 ,L3 ;外层循环:2次POP PSWRETEND51汇编单片机LED花样流水灯(1)start:CLR P1.0ACALL DELAYSETB P1.0ACALL DELAYCLR P1.1ACALL DELAYSETB P1.1ACALL DELAYCLR P1.2ACALL DELAYSETB P1.2ACALL DELAYCLR P1.3ACALL DELAYSETB P1.3ACALL DELAYCLR P1.4ACALL DELAYSETB P1.4ACALL DELAYCLR P1.5ACALL DELAYSETB P1.5ACALL DELAYCLR P1.6ACALL DELAYSETB P1.6ACALL DELAYCLR P1.7ACALL DELAYCLR P1.7ACALL DELAYCLR P1.0ACALL DELAYSETB P1.0ACALL DELAYCLR P1.1ACALL DELAYSETB P1.1ACALL DELAYCLR P1.2ACALL DELAYSETB P1.2ACALL DELAYCLR P1.3ACALL DELAYSETB P1.3ACALL DELAY CLR P1.4ACALL DELAY SETB P1.4ACALL DELAY CLR P1.5ACALL DELAY SETB P1.5ACALL DELAY CLR P1.6ACALL DELAY CLR P1.6ACALL DELAYCLR P1.0ACALL DELAY SETB P1.0ACALL DELAY CLR P1.1ACALL DELAY SETB P1.1ACALL DELAY CLR P1.2ACALL DELAY SETB P1.2ACALL DELAY CLR P1.3ACALL DELAY SETB P1.3ACALL DELAY CLR P1.4ACALL DELAY SETB P1.4ACALL DELAY CLR P1.5ACALL DELAY CLR P1.5ACALL DELAYCLR P1.0ACALL DELAY SETB P1.0ACALL DELAY CLR P1.1ACALL DELAY SETB P1.1ACALL DELAY CLR P1.3ACALL DELAY SETB P1.3 ACALL DELAY CLR P1.4ACALL DELAY CLR P1.4ACALL DELAYCLR P1.0ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2ACALL DELAY SETB P1.2 ACALL DELAY CLR P1.3ACALL DELAY CLR P1.3 ACALL DELAYCLR P1.0ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2ACALL DELAY CLR P1.2ACALL DELAYCLR P1.0ACALL DELAY SETB P1.0ACALL DELAYCLR P1.0ACALL DELAYCLR P1.0ACALL DELAYSETB P1.0ACALL DELAYSETB P1.1ACALL DELAYSETB P1.2ACALL DELAYSETB P1.3ACALL DELAYSETB P1.4ACALL DELAYSETB P1.5ACALL DELAYSETB P1.6ACALL DELAYSETB P1.7ACALL DELAYAJMP startDELAY:MOV R7,#250D1:MOV R6,#250D2:DJNZ R6,D2DJNZ R7,D1RETEND开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
程序A:;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#01111111B ;最下面的LED点亮LCALL DELAY;延时1秒MOV P1,#10111111B ;最下面第二个的LED点亮LCALL DELAY;延时1秒MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#11101111BLCALL DELAYMOV P1,#11110111BLCALL DELAYMOV P1,#11111011BLCALL DELAYMOV P1,#11111101BLCALL DELAYMOV P1,#11111110BLCALL DELAYMOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETEND程序B:;用移位方式实现流水灯org 00h ;程序上电从00h开始ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成11111110loop:mov p1,a ;将A送到P1口,发光二极管低电平点亮lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend51单片机汇编程序集作者:段磊文章来源:网络点击数:1176 更新时间:2008-9-23 20:53:391、片内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 :MOV A,R0MOV R1,ACLR AIBC1 :MOV @R1,AINC R1DJNZ R7,IBC1RET;片外RAM初始化子程序EBCLR1 :MOV A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,ACLR CEBC11 :MOVX @DPTR,AINC DPTRDJNZ R7,EBC11RET;片外RAM初始化子程序(双字节个单元) EBCLR2 :MOV A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,AMOV A,R7JZ EBC21INC R6EBC21 :CLR AMOVX @DPTR,AINC DPTRDJNZ R7,EBC21DJNZ R6,EBC21RET;内部RAM数据复制程序;入口 :R0,R7;占用资源:A;堆栈需求:2字节;出口 :R1IBMOV :MOV A,R0ADD A,R7MOV R0,AMOV A,R1ADD A,R7MOV R1,AIBM1 :DEC R0DEC R1MOV A,@R0MOV @R1,ADJNZ R7,IBM1RET;外部RAM数据复制程序;入口 :ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口 :R0,R1EBMOV1 :MOV A,ADDPLADD A,R7MOV DPL,ACLR AADDC A,ADDPHMOV DPH,AMOV A,R7ADD A,R1XCH A,R0ADDC A,#00HMOV P2,AEBM11 :DEC R0CJNE R0,#0FFH,EBM12DEC P2EBM12 :DEC DPLMOV A,DPLCJNE A,#0FFH,EBM13DEC DPHEBM13 :MOVX A,@R0MOVX @DPTR,ADJNZ R7,EBM11RET;外部RAM数据复制程序;入口 :ADDPH,ADDPL,R6,R7;占用资源:ACC;堆栈需求:2字节;出口 :R0,R1EBMOV2 :MOV A,ADDPLADD A,R7MOV DPL,AMOV A,R6ADDC A,ADDPHMOV DPH,AMOV A,R7ADD A,R1XCH A,R0ADDC A,R6MOV P2,AMOV A,R7JZ EBM21INC R6EBM21 :DEC R0CJNE R0,#0FFH,EBM22DEC P2EBM22 :DEC DPLMOV A,DPLCJNE A,#0FFH,EBM23DEC DPHEBM23 :MOVX A,@R0MOVX @DPTR,ADJNZ R7,EBM21DJNZ R6,EBM21RET;外部RAM数据复制到内部RAM程序;入口 :ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口 :R0ITEMOV :MOV A,ADDPLADD A,R7MOV DPL,AMOV A,ADDPHADDC A,#00HMOV DPH,AMOV A,R0ADD A,R7MOV R0,AITEM1 :DEC R0DEC DPLMOV A,DPLCJNE A,#0FFH,ITEM2DEC DPHITEM2 :MOVX A,@DPTRMOV @R0,ADJNZ R7,ITEM1RET;限幅滤波程序;入口 :A,SDAT,DELTY;占用资源:B;堆栈需求:2字节;出口 :AJUGFILT :MOV B,ACLR CSUBB A,SDATJNC JUGFT1CPL AINC AJUGFT1 :SETB ASUBB A,#DELTYJNC JUGFT3MOV A,SDATRETJUGFT3 :MOV A,BMOV SDAT,ARET;中位值滤波程序;入口 :ADDPH,ADDPL,N;占用资源:ESELSORT;堆栈需求:4字节;出口 :AMEDFILT :LCALL ESELSORTMOV A,NCLR CRRC AADD A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,AJNC MEDFT1INC DPH51单片机汇编程序集(二)2008年12月12日星期五 10:27辛普生积分程序内部RAM数据排序程序(升序)外部RAM数据排序程序(升序)外部RAM浮点数排序程序(升序)BCD小数转换为二进制小数(2位)BCD小数转换为二进制小数(N位)BCD整数转换为二进制整数(1位)BCD整数转换为二进制整数(2位)BCD整数转换为二进制整数(3位)BCD整数转换为二进制整数(N位)二进制小数(2位)转换为十进制小数(分离BCD码)二进制小数(M位)转换为十进制小数(分离BCD码)二进制整数(2位)转换为十进制整数(分离BCD码)二进制整数(2位)转换为十进制整数(组合BCD码)二进制整数(3位)转换为十进制整数(分离BCD码)二进制整数(3位)转换为十进制整数(组合BCD码)二进制整数(M位)转换为十进制整数(组合BCD码)三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7;辛普生积分程序;入口: DPTR,N,COUNT;占用资源: ACC,R3,R4,R6,R7;堆栈需求: 2字节;出口: R3,R4SJF : MOV R7,NMOVX A,@DPTRINC DPTRMOV R4,AMOV R3,#00HDEC R7SJF1 : MOVX A,@DPTRINC DPTRCLR CRLC AMOV R6,ACLR ARLC AXCH A,R7JNB ACC.0,SJF2XCH A,R6RLC AXCH A,R6XCH A,R7RLC AXCH A,R7SJF2 : XCH A,R7XCH A,R6ADD A,R4MOV R4,AMOV A,R6ADDC A,R3MOV R3,ADJNZ R7,SJF1SJF3 : MOVX A,@DPTRADD A,R4MOV R4,ACLR AADDC A,R3MOV R3,AMOV R7,#COUNTLCALL NMUL21MOV A,NMOV B,#03HMUL ABMOV R7,ALCALL NDIV31RETNMUL21 : MOV A,R4MOV B,R7MUL ABMOV R4,AMOV A,BXCH A,R3MOV B,R7MUL ABADD A,R3MOV R3,ACLR AADDC A,BMOV R2,ACLR OVRETNDIV31 : MOV B,#10HNDV311 : CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV F0,CCLR CSUBB A,R7JB F0,NDV312JC NDV313NDV312 : MOV R2,AINC R4NDV313 : DJNZ B,NDV311 RET;内部RAM数据排序程序(升序);入口: R0(起始地址),N(数据个数) ;占用资源: ACC,B,R5,R6,R7;堆栈需求: 2字节;出口: R0ISELSORT : MOV R7,NDEC R7ISST1: MOV A,R7MOV R6,AMOV A,R0MOV R1,AMOV R2,AMOV B,@R1ISST2: INC R1MOV A,@R1CLR CSUBB A,BJC ISST3MOV A,R1MOV R2,AMOV B,@R1ISST3: DJNZ R6,ISST2MOV A,BXCH A,@R1MOV B,R2MOV R1,BMOV @R1,ADJNZ R7,ISST1RET;外部RAM数据排序程序(升序);入口: ADDPH,ADDPL(起始地址),N(数据个数) ;占用资源: ACC,B,R0,R1,R5,R7;堆栈需求: 2字节;出口: ADDPH-ADDPLESELSORT : MOV R7,NDEC R7ESST1: MOV A,R7MOV R6,AMOV DPL,ADDPLMOV R1,DPLMOV DPH,ADDPHMOV R0,DPHMOVX A,@DPTRMOV B,AESST2: INC DPTRMOVX A,@DPTRCLR CSUBB A,BJC ESST3MOV R0,DPLMOV R1,DPHMOVX A,@DPTRMOVX A,@DPTRXCH A,BMOVX @DPTR,AMOV DPL,R0MOV DPH,R1MOV A,BMOVX @DPTR,ADJNZ R7,ESST1RET;外部RAM浮点数排序程序(升序);入口: ADDPH,ADDPL(起始地址),N(数据个数);占用资源: ACC,B,R0,R1,R2,R3,R4,R5,R6,R7,NCNT ;堆栈需求: 5字节;出口: ADDPH,ADDPLFSORT: MOV A,NMOV NCNT,ADEC NCNTFST1 : MOV B,NCNTMOV DPL,ADDPLMOV R1,DPLMOV DPH,ADDPHMOV R0,DPHMOVX A,@DPTRMOV R2,AINC DPTRMOVX A,@DPTRMOV R3,AINC DPTRMOVX A,@DPTRMOV R4,AFST2 : INC DPTRMOVX A,@DPTRMOV R5,AINC DPTRMOVX A,@DPTRMOV R6,AINC DPTRMOVX A,@DPTRMOV R7,APUSH BLCALL FCMPPOP BJNC FST4MOV A,DPLCLR CSUBB A,#02HJNC FST3DEC R0FST3 : MOV A,R5MOV R2,AMOV A,R6MOV R3,AMOV A,R7MOV R4,AFST4 : DJNZ B,FST2MOV A,DPLCLR CSUBB A,#02HMOV DPL,AJNC FST5DEC DPHFST5 : MOV A,R2MOVX @DPTR,AINC DPTRMOV A,R3MOVX @DPTR,AINC DPTRMOV A,R4MOVX @DPTR,AMOV A,R0MOV P2,AMOV A,R5MOVX @R1,AINC R1MOV A,R6MOVX @R1,AINC R1MOV A,R7MOVX @R1,ADJNZ NCNT,FST1RET;BCD小数转换为二进制小数(2位) ;入口: R0(低位首址),R7;占用资源: ACC,B,R5;堆栈需求: 2字节;出口: R3,R4PDTB : CLR AMOV R3,AMOV R4,APDB1 : MOV A,R3MOV B,#9AHMUL ABMOV B,#19HMUL ABADD A,R4MOV A,R5ADDC A,BMOV R5,AMOV A,@R0MOV B,#9AHMUL ABADD A,R5MOV R4,ACLR AADDC A,BXCH A,R3MOV B,#19HMUL ABADD A,R4MOV R4,AMOV A,BADDC A,R3MOV R3,AMOV A,@R0MOV B,#19HMUL ABADD A,R3MOV R3,ADEC R0DJNZ R7,PDB1RET;BCD小数转换为二进制小数(N位) ;入口: R1(低位首址),M,N;占用资源: ACC,B,R2,R3,R7;堆栈需求: 2字节;出口: R0PDTBMN : MOV A,R0MOV R2,AMOV A,R1MOV R3,AMOV B,NCLR APDBMN1 : MOV @R0,AINC R0DJNZ B,PDBMN1MOV A,NSWAP ARR AMOV R0,AMOV A,R3MOV R1,AMOV B,MCLR CPDBMN3 : MOV A,@R1 ADDC A,@R1DA AJNB ACC.4,PDBMN4SETB CCLR ACC.4PDBMN4 : MOV @R1,AINC R1DJNZ B,PDBMN3MOV B,NPDBMN5 : MOV A,@R0RLC AMOV @R0,AINC R0DJNZ B,PDBMN5DJNZ R7,PDBMN2MOV A,R2MOV R0,ARET;BCD整数转换为二进制整数(1位) ;入口: R0(高位地址),R7;占用资源: ACC,B;堆栈需求: 2字节;出口: R4IDTB1: CLR AMOV R4,AIDB11: MOV A,R4MOV B,#0AHMUL ABADD A,@R0INC R0MOV R4,ADJNZ R7,IDB11RET;BCD整数转换为二进制整数(2位) ;入口: R0(高位地址),R7;占用资源: ACC,B;堆栈需求: 2字节;出口: R3,R4IDTB2: CLR AIDB21: MOV A,R4MOV B,#0AHMUL ABMOV R4,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADD A,R3MOV R3,AMOV A,R4ADD A,@R0INC R0MOV R4,ACLR AADDC A,R3MOV R3,ADJNZ R7,IDB21RET;BCD整数转换为二进制整数(3位) ;入口: R0(高位地址),R7;占用资源: ACC,B;堆栈需求: 2字节;出口: R2,R3,R4IDTB3: CLR AMOV R2,AMOV R3,AMOV R4,AIDB31: MOV A,R4MOV B,#0AHMUL ABMOV R4,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADD A,R3MOV R3,ACLR AADDC A,BXCH A,R2MOV B,#0AHMUL ABADD A,R2MOV R2,AMOV A,R4ADD A,@R0INC R0MOV R4,ACLR AADDC A,R3MOV R3,ACLR AADDC A,R2MOV R2,ADJNZ R7,IDB31RET;BCD整数转换为二进制整数(N位) ;入口: R1(高位地址),M,N;占用资源: ACC,B,R2,R7,NCNT,F0 ;堆栈需求: 2字节;出口: R0IDTBMN : MOV A,R0MOV R2,AMOV B,NCLR AIDBMN1 : MOV @R0,AINC R0DJNZ B,IDBMN1MOV A,R2MOV R0,AMOV A,MMOV NCNT,AIDBMN2 : MOV R7,NCLR ACLR F0IDBMN3 : XCH A,@R0MOV B,#0AHMUL ABMOV C,F0ADDC A,@R0MOV F0,CMOV @R0,AINC R0MOV A,BDJNZ R7,IDBMN3MOV A,R2MOV R0,AMOV A,@R1INC R1ADD A,@R0MOV @R0,ADJNZ NCNT,IDBMN2RET;二进制小数(2位)转换为十进制小数(分离BCD码) ;入口: R3,R4,R7;占用资源: ACC,B;堆栈需求: 3字节;出口: R0PBTD : MOV A,R7PUSH APBD1 : MOV A,R4MOV B,#0AHMUL ABMOV R4,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADD A,R3MOV R3,ACLR AADDC A,BMOV @R0,AINC R0DJNZ R7,PBD1POP AMOV R7,AMOV A,R0CLR CSUBB A,R7MOV R0,ARET;二进制小数(M位)转换为十进制小数(分离BCD码) ;入口: R1,M,N;占用资源: ACC,B,R2,R3,R7,NCNT;堆栈需求: 2字节;出口: R0PBTDMN : MOV A,R0MOV R2,AMOV A,R1MOV R3,AMOV A,NMOV NCNT,APBDMN1 : MOV R7,MCLR ACLR F0PBDMN2 : XCH A,@R1MOV B,#0AHMUL ABMOV C,F0ADDC A,@R1MOV F0,CMOV @R1,AINC R1MOV A,BDJNZ R7,PBDMN2ADDC A,#00HMOV @R0,AINC R0MOV A,R3MOV R1,ADJNZ NCNT,PBDMN1MOV A,R2MOV R0,ARET;二进制整数(2位)转换为十进制整数(分离BCD码) ;入口: R3,R4;占用资源: ACC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD21 : MOV NCNT,#00HMOV R2,#00HIBD211 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV @R0,AINC R0INC NCNTMOV A,R3ORL A,R4JNZ IBD211MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(2位)转换为十进制整数(组合BCD码) ;入口: R3,R4;占用资源: ACC,B,R7;堆栈需求: 3字节;出口: R0IBTD22 : MOV A,R0PUSH AMOV R7,#03HCLR AIBD221 : MOV @R0,AINC R0DJNZ R7,IBD221POP AMOV R0,AMOV R7,#10HIBD222 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV B,#03HIBD223 : MOV A,@R0ADDC A,@R0DA AMOV @R0,AINC R0DJNZ B,IBD223POP AMOV R0,ADJNZ R7,IBD222RET;二进制整数(3位)转换为十进制整数(分离BCD码) ;入口: R2,R3,R4;占用资源: ACC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD31 : CLR AMOV NCNT,AIBD311 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV @R0,AINC R0INC NCNTMOV A,R2ORL A,R3ORL A,R4JNZ IBD311MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(3位)转换为十进制整数(组合BCD码);入口: R2,R3,R4;占用资源: ACC,B,R7;堆栈需求: 3字节;出口: R0IBTD32 : MOV A,R0PUSH AMOV R7,#04HCLR AIBD321 : MOV @R0,AINC R0DJNZ R7,IBD321POP AMOV R0,AMOV R7,#18HIBD322 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV B,#04HIBD323 : MOV A,@R0ADDC A,@R0DA AMOV @R0,AINC R0DJNZ B,IBD323POP AMOV R0,ADJNZ R7,IBD322RET;二进制整数(M位)转换为十进制整数(组合BCD码) ;入口: R1,M,N;占用资源: ACC,B,R2,R3,R7;堆栈需求: 2字节;出口: R0IBTDMN : MOV A,R0MOV R2,AMOV A,R1MOV R3,AMOV B,NCLR AIBDMN1 : MOV @R0,AINC R0DJNZ B,IBDMN1MOV A,MSWAP ARR ACLR CMOV R7,AIBDMN2 : MOV A,R2MOV R0,AMOV A,R3MOV R1,AMOV B,MIBDMN3 : MOV A,@R1RLC AMOV @R1,AINC R1DJNZ B,IBDMN3MOV B,NIBDMN4 : MOV A,@R0ADDC A,@R0DA AJNB ACC.4,IBDMN5SETB CCLR ACC.4IBDMN5 : MOV @R0,AINC R0DJNZ B,IBDMN4DJNZ R7,IBDMN2MOV A,R2MOV R0,ARET;三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7 ;入口: R2,R3,R4,R7;占用资源: ACC,B,F0;堆栈需求: 3字节;出口: (R2),R3,R4,R7,OVNDIV31 : MOV A,R2MOV B,R7DIV ABPUSH AMOV R2,BMOV B,#10HNDV311 : CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV F0,CCLR CSUBB A,R7JB F0,NDV312JC NDV313NDV312 : MOV R2,AINC R4NDV313 : DJNZ B,NDV311POP ACLR OVJZ NDV314SETB OVNDV314 : XCH A,R2MOV R7,ARET第七个试验:流水灯数字显示综合练习----51单片机汇编语言试验教程收藏该程序运行结果为个位数码管轮流现实0,1,2,3,4,5,6,7,8然后十位数码管轮流现实0,1,2,3,4,5,6,7,8反复循环P1.0,P1.1, P1.2,P1.3, P1.4,P1.5, P1.6,P1.7, 依次点亮然后轮流点亮小喇叭不停发出滴答声:注意该程序配套为我站的倚天版开发套件:如果是标准版:因他的数码管接法不同。