因仑“3+1”工程特种兵精英论坛

标题: LED渐亮渐灭PWM调节 [打印本页]

作者: XJzy    时间: 2015-10-1 16:40
标题: LED渐亮渐灭PWM调节
ORG 00H
JMP MAIN
ORG 30H

MAIN:
MOV A,#0
CALL LOOP ;由暗变亮子程序
MOV P1,#0FFH ;关灯,全暗
MOV A,#0
CALL LOOP2 ;由亮变暗子程序
MOV P1,#0 ;开灯,全亮
JMP MAIN


LOOP:
;这一段为点亮灯的延时
MOV P1,#0 ;把灯点亮
INC A  ;A的值加1
CJNE A,#0FFH,E2 ;A还没有加到FF,跳转E2
E1:JMP OVER ;A加到了FF,结束返回
E2:MOV R7,A ;A的值存入R7
D1:MOV R6,#30 ;延时子程序
DJNZ R6,$
DJNZ R7,D1 ;R7-1不为零就转D1,这里R7即上面预置的A值,用在这里,就是每次延时时间不同,有255级
MOV P1,#0FFH ;延时时间到,送所有灯

;这一段为关掉灯的延时,两段相加,组成占空比可变的方波输出控制灯由暗到亮
CPL A  ;A的值取反,
MOV R7,A
D2:MOV R6,#30 ;延时子程序
DJNZ R6,$
DJNZ R7,D2
CPL A  ;再取反,恢复原来的值
JMP LOOP ;跳回循环
OVER:RET


;以下为由亮变暗子程序,原理与上面一样.
LOOP2:
MOV P1,#0FFH
INC A  ;程序运行到此,A的值为0,经这一步后为1
CJNE A,#0FFH,W2
W1:JMP OVER2
W2:
MOV R7,A
D11:MOV R6,#30
DJNZ R6,$
DJNZ R7,D11
MOV P1,#0

CPL A
MOV R7,A
D22:MOV R6,#30
DJNZ R6,$
DJNZ R7,D22
CPL A
JMP LOOP2
OVER2:RET

END







欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4