|
|
ORG 0H ;程序從程序存儲(chǔ)器的0單元開始存放
AJMP MAIN ;跳轉(zhuǎn)到主程序
ORG 20H ;主程序從程序存儲(chǔ)器的30H單元開始存放
MAIN: MOV 30H,#0 ;給30H單元賦初始值0
LOOP: INC 30H ;30H單元內(nèi)的數(shù)加1
MOV R1,30H ;將30H單元內(nèi)的數(shù)賦值給R1,以便應(yīng)用 CJNE Rn,#DATA,REL語言判斷并跳轉(zhuǎn)
CJNE R1,#10,NEXT ;若30H內(nèi)的數(shù)不是10則跳轉(zhuǎn)到調(diào)用顯示
MOV 30H,#0 ;若30H內(nèi)的數(shù)是10,則清零
NEXT: ACALL DISPLAY ;調(diào)用顯示子程序
ACALL L2025
SJMP LOOP ;跳轉(zhuǎn)到加1部分,循環(huán)
DISPLAY:MOV R2, #8
MOV R0,#30H ;將顯示數(shù)據(jù)的存放首單元賦值給R0,以便調(diào)用循環(huán)將數(shù)值賦值給A
MOV DPTR,#TABLE ;將顯示碼的首地址賦值給DPTR
DISLOP: MOV A,@R0 ;將以R0內(nèi)的數(shù)30H內(nèi)的數(shù)值賦值給A
MOVC A,@A+DPTR ;查表語句,將顯示碼賦值給A
DP2: RLC A ;帶進(jìn)位標(biāo)志的左移操作
MOV P1.0,C ;串行輸出一位段碼數(shù)據(jù)
CLR P1.1 ;
SETB P1.1 ;來個(gè)上升沿以產(chǎn)生移位時(shí)鐘, 每次來這個(gè)脈沖,移位寄存器上的數(shù)往后面移動(dòng)一位,原來A=1,
DJNZ R2,DP2
RET
;子程序返回
L2025: MOV R6,#28H ; 延時(shí)子程序
L2027: MOV R7,#0F9H
L2029: DJNZ R7,$
DJNZ R6,L2027
DJNZ R5,L2025
RET
TABLE:
DB 40H,79H,24H,30H,19H, 12H,02H,78H,00H,10H
END ;程序結(jié)束
|
|