这个原理主要是控制亮和灭的百分比,亮/灭百分比越大那么就看上去亮,反之暗些。当然,我们需要将亮灭时间控制在20ms以内。
org 00H ajmp start org 30H start: ;step 1:let 74HC138 enable clr P1.4 setb P1.3 ;step 2:selet LEDS6 ;setb P1.2 ;setb P1.1 ;clr p1.0 sbit ADDR0=P1.0 sbit ADDR1=P1.1 sbit ADDR2=P1.2 setb ADDR2 setb ADDR1 clr ADDR0 ;control the leds main: mov R7,#255 s1: mov A,#0FEH mov P0,A mov R6,#1 ss1: call delay1 djnz R6,ss1 mov A,#0FFH mov P0,A call delay djnz R7,s1 mov R7,#200 s2: mov A,#0FEH mov P0,A mov R6,#2 ss2: call delay1 djnz R6,ss2 mov A,#0FFH mov P0,A call delay djnz R7,s2 mov R7,#180 s3: mov A,#0FEH mov P0,A mov R6,#3 ss3: 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,#5 ss4: 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 delay djnz R7,s6 mov 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 delay djnz R7,s7 mov R7,#255 s8: mov A,#0FEH mov P0,A mov R6,#6 ss8: call delay1 djnz R6,ss8 djnz R7,s8 mov A,#0FFH mov P0,A call delay ajmp main //4ms delay: mov R1,#1H loop1: mov R2,#01FH loop2: mov R3,#30 loop3: djnz R3,loop3 djnz R2,loop2 djnz R1,loop1 ret //1ms delay1: mov R0,#1 lp1: mov R1,#5 lp2: mov R2,#50 lp3: djnz R2,lp3 djnz R1,lp2 djnz R0,lp1 ret end
呼吸灯
最新推荐文章于 2024-06-23 15:52:53 发布