本帖最后由 wh6ic 于 2009-8-3 16:20 编辑
给你个79F081的8位PWM汇编设置,很容易改成C的。
SetPWM: ; PWM时间常数在[r5]、[r7]中
lcall drive_motor
mov PWMLO, #0x55
clr a
mov PWMEN, a ;关闭PWM修改死区时间
mov PWM1DT, a
mov PWM2DT, a ; PWM 死区时间 = 0
mov PWMEN, #0x06 ;开启PWM参数修改允许, 使用PWM1/PWM2
mov PWM1C, #0x03
mov PWM2C, #0x03 ;关闭PWM中断,高电平有效,PWM时钟为 Osc / 16 = 11.0592MHz / 16
dec a
mov PWM1P, a
mov PWM2P, a ; PWM 周期为(Osc / 16) / 255
mov PWM1D, r7
mov PWM2D, r5 ; PWM 占空比设置 (0 ~ 255)
mov c, pwm_b1
mov PWM_2, c
mov c, pwm_a1
mov PWM_4, c ; PWM 方向设定
mov PWMLO, #0xc3 ;关闭PWM参数修改允许
ret
/**/ |