A_Bit EQU 20H
B_Bit EQU 21h ;十位數存放處
TEMP EQU 22h
STAR: MOV TEMP, #0 ;初始化計數器
STLOP:
ACALL DISPLAY
INC TEMP
MOV A,TEMP
CJNE A,#100,NEXT ;=100重來
MOV TEMP,#0
NEXT:
LJMP STLOP
;顯示子程序
DISPLAY:
MOV A, TEMP ;將temp中 的數轉換成10進制
MOV B,#10;
DIV AB;
MOV B_Bit,A ;十位在A
MOV A_Bit,B;個位在B
MOV DPTR,#TAB;指定查表啟始地址
MOV R0,#2;4
DPL1: MOV R1,#100;250 ;顯示1000次
DPLOP: MOV A,A_Bit;取個位數
MOVC A,@A+DPTR;查個位數的7段代碼
;CPL A;
MOV P1 ,A;送出個位的7段代碼
CLR P2.7;
ACALL D1MS;延時顯示1ms
SETB P2.7;
MOV A,B_Bit ;取十位數
MOVC A, @A+DPTR ;查十位數的7 段代碼
;CPL A;
MOV P1 ,A;送出十位的7段代碼
CLR P2.6;
ACALL D1MS;
SETB P2.6;
DJNZ R1,DPLOP ;100次沒完循環
DJNZ R0,DPL1 ;2個100次沒完循環RET
;延時4毫秒即2微秒* R7*R6(按12MHZ算)
D1MS: MOV R7 ,#5;10
D1: MOV R6,#50;
DJNZ R6,$;
DJNZ R7,D1;
RET;
;7段數碼管各劃的數字排列表,共陽的七段花數
TAB:
DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h;
END;就不知道對不對,我們學校給的 |