自己做了個除法顯示程序 很簡單 就是要讓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
1111.jpg (76.86 KB, 下載次數: 133)
下載附件
2011-9-2 09:44 上傳
22222.jpg (36.41 KB, 下載次數: 140)
下載附件
2011-9-2 09:44 上傳
|