;---------------------------------------------------------------
;程序名称:用51输出三相PWM控制LED
;硬件说明:XY900_USB型单片机学习开发板
;程序说明:单片机产生三相PWM脉冲,P2.5/P2.6/P2.7的LED亮度不同
;---------------------------------------------------------------
S EQU 100 ;设置PWM输出脉冲宽度比例
S1 EQU 10 ;
S2 EQU 50
S3 EQU 90
ORG 0
AJMP INIT_T0
ORG 0BH ;定时器0溢出入口
AJMP TO_SRV ;跳到T0中断
;**********************主程序************************
INIT_T0:
ORL P2,#0F0H ;设置P2.5~2.7为高电平
MOV TMOD,#00000010B ;T0工作模式2
MOV TH0,#0 ;计数值为0
MOV TL0,#0
SETB EA ;允许总中断
SETB ET0 ;允许T0中断
MOV R0,#S ;将PWM比值加到寄存器R0中
MOV R1,#S1 ;
MOV R2,#S2
MOV R3,#S3
SETB TR0 ;开始计时
AJMP $ ;等待中断
;******************中断服务子程序************************
TO_SRV:
DJNZ R0,L1 ;R0减1,是否为0?
ORL P2,#0F0H
MOV R0,#S
MOV R1,#S1
MOV R2,#S2
MOV R3,#S3
;----------------------------------
L1:DJNZ R1,L2
CLR P2.5 ;R1为0时,P2.5输出0-点亮
L2:DJNZ R2,L3
CLR P2.6 ;
L3:DJNZ R3,L4
CLR P2.7 ;
L4:RETI ;中断返回
END