- MOV R0,#000H ;初始PWM占空比为零
- AAA:
- CALL PWM
- CPL P3.1 ;每输出一次占空比,P3.1取反一次。
- INC R0 ;占空比锯齿状递增
- SJMP AAA
- ;R0 占空比 0~255 数值越大,高电平的持续时间越长
- PWM:
- MOV A,R0 ;R0的值送A寄存器
- JZ BBB ;占空比为零
- CPL A ;A寄存器取反
- JZ CCC ;占空比取反后为零 也就是最大
- CPL A
- SETB P3.0 ;P3.0置高电平
- DJNZ ACC,$ ;A减1不为0在此跳转
- MOV A,R0
- CPL A ;A寄存器取反
- CLR P3.0 ;P3.0置低电平
- DJNZ ACC,$
- RET
- BBB: ;占空比为零跳转地
- CLR P3.0 ;P3.0置低电平
- MOV A,#0FFH
- DJNZ ACC,$
- RET ;返回
- CCC: ;占空比最大跳转地
- SETB P3.0 ;P3.0置高电平
- MOV A,#0FFH ;立即数255送A寄存器
- DJNZ ACC,$
- RET
- END
复制代码
|