START: MOV WDTCN, #0deh ; disable watchdog timer 禁止看门狗定时器
MOV WDTCN, #0adh
MOV OSCXCN, #67h ; enable external crystal 外部晶振
; oscillator at 22.1184MHz
CLR A ; wait at least 1ms 延时1ms
DJNZ ACC, $ ; wait ~512us
DJNZ ACC, $ ; wait ~512us
; system clock source
ORL OSCXCN, #80h ; enable missing clock detector
ORL CKCON, #08h
MOV XBR2, #40h
PWM1 EQU P1.0
PWM2 EQU P1.1
PWM3 EQU P1.2
PWM4 EQU P1.3
MAIN: JB P1.4,ZZ ;跳正转子程序
LCALL FZ ;跳反转子程序
;//////////// ;正转控制程序
ZZ: CLR PWM3
CLR PWM4
Loop0: JNB P1.4,FZ
CLR PWM1
CLR PWM2
MOV A,#5 ;改变次值改变低电平的宽度
ACALL Delay
SETB PWM1
SETB PWM2
MOV A, #5 ;改变次值改变高电平的宽度 改变高电平和低电平
;则可以改边PWM的脉宽从而改边电机的转数
ACALL Delay
SJMP Loop0
;//////////// ;反转控制程序
FZ: CLR PWM1
CLR PWM2
Loop: JB P1.4,MAIN
CLR PWM3
CLR PWM4
MOV A, #3 ;改变次值改变低电平的宽度
ACALL Delay
SETB PWM3
SETB PWM4
MOV A, #7 ;改变次值改变高电平的宽度 改变高电平和低电平
;则可以改边PWM的脉宽从而改边电机的转数
ACALL Delay
SJMP Loop
;////////// ;沿时产生33HZ左右的PWM脉冲信号
Delay: MOV R0, #255
DLoop: LCALL DELAY1
DJNZ R0, DLoop
DJNZ ACC, DLoop
RET
DELAY1:MOV R4,#4
AA1: DJNZ R4,AA1
RET
END