自己做了个除法显示程序 很简单 就是要让1000/100 然后让结果显示在数码管上 但烧进单片机后 为什么数码管一点反映都没有? 单片机开发板等下上图 先上程序:
ORG 0060H AJMP MAIN MAIN: CLR P2.6 CLR P2.7 MOV R7,#03H MOV R6,#0E8H MOV R5,#00H MOV R4,#64H LCALL DIV0 ;调用除法 MOV A,R7 ;显示商的高位 MOV P0,A SETB P2.6 ;开锁存器 CLR P2.6 ;关锁存器 LCALL DELAY MOV A,#0FEH ;第一个数码管显示 MOV P0,A SETB P2.7 CLR P2.7 LCALL DELAY MOV A,R6 ;显示商的低位 MOV P0,A SETB P2.6 CLR P2.6 LCALL DELAY MOV A,#0FDH ;第二个数码管显示 MOV P0,A SETB P2.7 CLR P2.7 LCALL DELAY MOV A,R3 ;显示余数高位 MOV P0,A SETB P2.6 CLR P2.6 LCALL DELAY MOV A,#0EFH ;第四个数码管显示 MOV P0,A SETB P2.7 CLR P2.7 LCALL DELAY MOV A,R2 ;显示余数低位 MOV P0,A SETB P2.6 CLR P2.6 LCALL DELAY MOV A,#0DFH ;第五个数码管显示 MOV P0,A SETB P2.7 CLR P2.7 LCALL DELAY AJMP MAIN DIV0: MOV 3AH,#0 MOV A,R5 JNZ ZERO MOV A,R4 JZ OVER ZERO: MOV A,R7 JNZ START MOV A,R6 JNZ START RET START: CLR A MOV R1,#16 MOV R2,#0 MOV R3,#0 LOOP: CLR C MOV A,R6 ;把被除数左移一位 RLC A MOV R6,A MOV A,R7 RLC A MOV R7,A MOV A,R2 ;把被除数移出的位送到R2 RLC A MOV R2,A MOV A,R3 RLC A MOV R3,A MOV A,R2 ;用R2减去除数低位 SUBB A,R4 JC NEXT ;不够则转移 MOV R0,A MOV A,R3 ;用R3减去除数高位 SUBB A,R5 JC NEXT INC R6 MOV R3,A MOV A,R0 MOV R2,A NEXT: DJNZ R1,LOOP ;16位没有移完就继续左移 CLR C RET OVER: MOV 3AH,#0FFH RET DELAY: MOV R5,#5 D1:MOV R6,#250 D2:MOV R7,#250 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |