HEIPING:MOV R0,#40 ;r0=40 BLACK子程序入口參數
LCALL BLACK ;調用BLACK
LP: MOV R6,#0 ;r6=0
MOV R3,#16 ;r3=16決定BEGIN子程序執行次數
MOV A,#0 ;a=0
BEGIN: MOV DPTR,#MyZiKu ;dptr=MYZIKU(首地址)
MOVC A,@A+DPTR ;a=欲顯示字符的字形碼
LCALL SHOW ;調用SHOW程序(顯示)
LCALL DELAY ;調用DELAY程序(延時)
INC R6 ;r6加1
MOV A,R6 ;a=r6
DJNZ R3,BEGIN ;r3減1不為0轉移到BEGIN
;BEGIN這壹段程序的作用是在LED上每隔DELAY程序設定的時間按順序顯示0~F 循環16次
LJMP LP ;轉移到LP執行
;延時程序 r0 r1 r2決定延時時間
DELAY: MOV R0,#0FFH ;r0=255
DLP: MOV R1,#0FFH ;r1=255
DLP1: MOV R2,#04H ;r2=4
DJNZ R2,$ ;r2減1不為0仍在該行再次執行
DJNZ R1,DLP1 ;r1減1不為0轉到DLP1
DJNZ R0,DLP ;r0減1不為0轉到DLP
RET ;退出
;顯示程序 該程序將循環8次顯示壹個字符
SHOW: MOV R0,#8 ;r0=8
SLP: CLR CLK ;P1.0輸出低電平
RRC A ;將存放在A中欲顯示的字符碼右移壹位(最低位存入C)
MOV A_B,C ;A_B(未見到妳程序中定義 應是個端口)=C
SETB CLK ;P1.0輸出高電平
DJNZ R0,SLP ;r0減1不為0轉到SLP 繼續輸出字形碼
RET
;該程序循環40次 P1.0輸出40個脈沖 同時端口A_B持續輸出低電平
BLACK: CLR CLK ;P1.0輸出低電平
CLR A_B ;A_B(未見到妳程序中定義 應是個端口)輸出低電平
SETB CLK ;P1.0輸出高電平
DJNZ R0,BLACK ;r0減1不為0轉到BLACK
RET
;0~F的字形碼
MYZIKU:
DB 77H,06H,0B3H,97H,0C6H ;"0,1,2,3,4"
DB 0D5H,0F5H,07H,0F7H,0D7H ;"5,6,7,8,9"
DB 0E7H,0F4H,71H,0B6H,0F1H,0E1H ;"A,B,C,D,E,F"
0101 0000 1289 1488 R4H5 Q533