ORG 0000H ;复位时程序从此开始
SJMP START ;跳到START进行初始化
ORG 0030H ;初始化程序从30H开始
;*******************初始化程序**************************
START:MOV SP,#60H ;给堆栈指针赋值60H
MOV P0,#0FFH ;给P0赋值FFH(十进制255)
MOV R2,#00H ;给R2赋0
;------------------------------主程序-----------------------------
MAIN:MOV A,R2 ;R2里的数据拷贝给A
MOV DPTR,#TAB ;给DPTR数据指针赋#TAB
MOVC A,@A+DPTR ;A和DPTR中的数加一起作为地址,
;把此地址中的数据取出来再存到A中
MOV P0,A ;将数据送P0显示
INC R2 ;R2中的数据加1
CALL DELAY ;调延时子程序DELAY
CJNE R2,#72,MAIN ;R2和72比较不相等就跳转到MAIN处
MOV R2,#00H ;给R2重新赋0
SJMP MAIN ;跳转到MAIN处
;---------------------------延时子程序--------------------------
DELAY:MOV R0,#250 ;给R0赋值
D2:MOV R1,#250 ;给R1赋值
D1:DJNZ R1,D1 ;R1减1不等于0跳到D1处
DJNZ R0,D2 ;R0减1不等于0跳到D2处
RET ;子程序结束返回
;******************数据表*******************************
TAB:
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DB 0FFH,0FFH,00FH,0FFH,0FFH,000H,0FFH,0FFH
DB 0FFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB 0FEH,0FFH,0FEH,0FDH,0FBH,0F7H,0EFH,0DFH
DB 0BFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH
DB 0FEH,0FFH,0FCH,0F3H,0CFH,03FH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,03FH
DB 0FCH,0F3H,0CFH,03FH,0FFH,03FH,0CFH,0F3H
DB 0FCH,0FFH,0F0H,000H,0FFH,000H,000H,0FFH
;*********************************************************
END
|