|
先是讓第一個(gè)燈閃的程序: start: SETB P0.0;(1)是讓燈滅 LCALL DELAY;(2)是延時(shí),調(diào)用延時(shí)子程序指令 CLR P0.0;(3)是讓燈亮 LCALL DELAY;(4)和第二條一模一樣,也是調(diào)用延時(shí)子程序指令 LJMP start;(5)跳轉(zhuǎn)回去執(zhí)行第一條指令 DELAY: MOV R7,#250;(6)讓R7作為計(jì)數(shù)器,并裝入一個(gè)常數(shù) D1: MOV R6,#250;(7)讓R6作為計(jì)數(shù)器,并裝入一個(gè)常數(shù) D2: DJNZ R6,D2;(8)讓R6減1,并判斷R6是否為0。若R6為0,向下執(zhí)行指令。若R6不為0,跳轉(zhuǎn)D2,繼續(xù)讓R6減1。 DJNZ R7,D1;(9)讓R7減1,并判斷R7是否為0。若R7為0,向下執(zhí)行指令。若R7不為0,跳轉(zhuǎn)D1,使R6完成新一輪計(jì)數(shù)。 RET;(10)返回指令。 END;(11)程序結(jié)束 再是挨著閃的程序: ;------------------主程序------------------ START: CLR P0.0;P0.0輸出低電平,使LED1點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.0;P0.0輸出高電平,使LED1熄滅 CLR P0.1;P0.1輸出低電平,使LED2點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.1;P0.1輸出高電平,使LED2熄滅 CLR P0.2;P0.2輸出低電平,使LED3點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.2;P0.2輸出高電平,使LED3熄滅 CLR P0.3;P0.3輸出低電平,使LED4點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.3;P0.3輸出高電平,使LED4熄滅 CLR P0.4;P0.4輸出低電平,使LED5點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.4;P0.4輸出高電平,使LED5熄滅 CLR P0.5;P0.5輸出低電平,使LED6點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.5;P0.5輸出高電平,使LED6熄滅 CLR P0.6;P0.6輸出低電平,使LED7點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.6;P0.6輸出高電平,使LED7熄滅 CLR P0.7;P0.7輸出低電平,使LED8點(diǎn)亮 ACALL DELAY;調(diào)用延時(shí)子程序 SETB P0.7;P0.7輸出高電平,使LED8熄滅 ACALL DELAY;調(diào)用延時(shí)子程序 AJMP START;八個(gè)燈一次亮了后返回開(kāi)頭再次循環(huán) ;------延時(shí)子程序------- DELAY: MOV R0,#255;R0裝入255 D1: MOV R1,#255;R1裝入255 DJNZ R1,$;使R1自減為零后執(zhí)行下一句指令 DJNZ R0,D1;R0自減1,如果為零執(zhí)行下一句指令,如果不為零,跳轉(zhuǎn)D1 RET;子程序返回 ;==============================================================================; END;程序結(jié)束 |