这个原理主要是控制亮和灭的百分比,亮/灭百分比越大那么就看上去亮,反之暗些。当然,我们需要将亮灭时间控制在20ms以内。org 00Hajmp startorg 30Hstart:;step 1:let 74HC138 enable clr P1.4setb P1.3;step 2:selet LEDS6;setb P1.2;setb P1.1;clr p1.0sbit ADDR0=P1.0sbit ADDR1=P1.1sbit ADDR2=P1.2setb ADDR2setb ADDR1clr ADDR0;control the ledsmain:mov R7,#255 s1: mov A,#0FEH mov P0,Amov R6,#1ss1: call delay1 djnz R6,ss1 mov A,#0FFH mov P0,A call delaydjnz R7,s1 mov R7,#200 s2: mov A,#0FEH mov P0,A mov R6,#2ss2: call delay1 djnz R6,ss2mov A,#0FFHmov P0,Acall delay djnz R7,s2 mov R7,#180 s3: mov A,#0FEH mov P0,A mov R6,#3ss3: call delay1 djnz R6,ss3 mov A,#0FFH mov P0,A call delay djnz R7,s3 mov R7,#150 s4: mov A,#0FEH mov P0,A mov R6,#5ss4: call delay1 djnz R6,ss4 mov A,#0FFH mov P0,A call delay djnz R7,s4 mov R7,#100 s5: mov A,#0FEH mov P0,A mov R6,#8 ss5: call delay1 djnz R6,ss5 mov A,#0FFH mov P0,A call delay djnz R7,s5 mov R7,#80 s6: mov A,#0FEH mov P0,A mov R6,#11 ss6: call delay1 djnz R6,ss6 mov A,#0FFH mov P0,A call delaydjnz R7,s6mov R7,#60 s7: mov A,#0FEH mov P0,A mov R6,#15 ss7: call delay1 djnz R6,ss7 mov A,#0FFH mov P0,A call delaydjnz R7,s7mov R7,#255 s8: mov A,#0FEH mov P0,A mov R6,#6 ss8: call delay1 djnz R6,ss8djnz R7,s8mov A,#0FFHmov P0,Acall delay ajmp main //4msdelay: mov R1,#1H loop1: mov R2,#01FH loop2: mov R3,#30 loop3: djnz R3,loop3 djnz R2,loop2 djnz R1,loop1 ret//1msdelay1:mov R0,#1lp1:mov R1,#5lp2:mov R2,#50 lp3:djnz R2,lp3djnz R1,lp2djnz R0,lp1retend