自己做了个除法显示程序 很简单 就是要让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
|