/*stc15f101w,运行频率12MHz,输出频率1KHZ,占空比0~100可调,周末闲来无事,顺手写的,希望能帮到你*/
AUXR DATA 8EH
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TM0_0
MAIN:
MOV R0,#0H
MOV R1,#0H ;占空比初值
MOV R2,#100
MOV TMOD,#00000010B ;定时器0工作方式2
MOV 8FH,#00000000B
MOV TH0,#0F6H
MOV TL0,#0F6H
MOV AUXR,#00H
SETB ET0
SETB EA
SETB TR0
M_0: SETB P3.2
NOP
NOP
JNB P3.2,M_8 ;占空比+
SETB P3.3
NOP
NOP
JNB P3.3,M_2 ;占空比-
SJMP M_0
M_2: CJNE R1,#0,M_3
SJMP M_0
M_3: DEC R1
SJMP M_END
M_8: CJNE R1,#101,M_9
SJMP M_0
M_9: INC R1
M_END: LCALL DELAY
SJMP M_0
TM0_0: CJNE R0,#0H,TM0_1 ;定时器0中断执行程序
CLR P3.5
SJMP TM0_2
TM0_1: SETB P3.5
DJNZ R0,TM0_2
CLR P3.5
TM0_2: DJNZ R2,TM0_END
MOV R2,#100
MOV A,R1
MOV R0,A
TM0_END:RETI
DELAY: ;延时255毫秒
CJNE R2,#1,$
INC R4
CJNE R4,#255,DELAY
MOV R4,#0
RET
END