⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led

📁 RM51单片机实验板配套实验例程库
💻
字号:

;****************************************************************
;*  ★★★         LED发光二极管调光实验程序         ★★★     *
;* (电子驿站单片机实验板、开发板配套例程,程序转载请著明出处。) *
;*  E-mail:yuanxiongfei@21cn.com   QQ留言:451338254 476485321  *
;*  编程:ourmpu  http://www.ourmpu.com/ 更多例程请登陆网站     *
;****************************************************************
;* P1口的8个二极管会从 亮——暗 交替变化,255级亮度调光           *
;****************************************************************

	ORG	0000H
	AJMP 	MAIN

	ORG 	0030H
MAIN:	MOV 	A,#0
	ACALL LOOP 		;由暗变亮子程序
	MOV 	P1,#0FFH 	;关灯,全暗
	MOV 	A,#0
	ACALL LOOP2 		;由亮变暗子程序
	MOV 	P1,#0 		;开灯,全亮
	AJMP 	MAIN

;以下一段为由暗变亮的子程序,变化程度共255级,由两段程序组成,一段点亮,时间值由A中的数决定
;另一段将A取反后作延时时间值,这样无论A是什么值,每个周期时间相等,但点亮和关闭的值就不断变化
;类似一个频率一定,占空比可调的方波,从而实现灯光由暗到亮.

LOOP:	;这一段为点亮灯的延时
	MOV 	P1,#0 		;把灯点亮
	INC 	A 		;A的值加1
	CJNE 	A,#0FFH,E2 	;A还没有加到FF,跳转E2
E1: 	AJMP 	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
	JMP 	LOOP 		;跳回循环
	CPL 	A 		;再取反,恢复原来的值
OVER: 	RET
;以下为由亮变暗子程序,原理与上面一样.

LOOP2:
	MOV 	P1,#0FFH 
	INC 	A 		;程序运行到此,A的值为0,经这一步后为1
	CJNE 	A,#0FFH,W2
W1: 	AJMP 	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
	AJMP 	LOOP2
OVER2: 	RET
	
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -