最近在學51匯編程序,現遇到下面一題,中間有3個問題不明白,特討教!
題:六個七段LED數碼管,51系列單片機,LED顯示用動態掃描,P3.0~P3.5做為掃描輸出,P1口輸出段碼數據,數據存放地址為70H~75H。
;顯示程序;
DISPLAY:MOV R1,#70H MOV R5,#0FEH ;掃描端口初值;問:為什么初值一定是0FEH PLAY:MOV A,R5 MOV P1,#OFFH MOV P3,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS ;數據顯示1ms時間;可DL1MS程序算出來應該是0.5ms INC R1 MOV A,R5 JNB ACC.5 ,ENDOUT ;A中的值為11011111(B)時結束;問:11011111(B)值是怎么算出來的 RL A MOV R5,A AJMP PLAY ENDOUT: MOV P3,#0FFH MOV P1,#0FFH RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
;1ms延時;
DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET
|