松翰单片机_SN8F570310——PWM
SN8F570310——PWM
代码示例:
#include "Equ.h" /* 普通 PWM 单脉冲 PWM 死区 PWM (就是取反的PWM) 寄存器:PW1M PW1CH (输出引脚) PW1Y (16 位 PWM1 周期控制位) PW1D (16 位 PWM1 占空比控制位) PW1B (16 位 PWM1 死区控制位) PW1A (8 位 PWM1 死区控制位) IEN0 INE4 PW1C 加载 PW1Y 寄存器的值决定 PWM 的周期和分辨率 (装载值) PW1C 从 0000H 开始计数,PWM 输出高电平 (计数器) PW1C=PW1D 时, PWM 输出低电平 (比较值) P2.4 PWM11 */ void pwm_init(void) { PW1YH = 0xA0; //周期 PW1YL = 0x00; PW1DH = 0x50; //占空比 PW1DL = 0x00; IEN4 |= 0x80; //开启PWM中断 PW1CH |= 0x02; //PWM 输出引脚; PW1M = 0x80 | 0x40; //使能时钟 // PW1M |= 0x01 //单脉冲 // PW1M |= 0x08 //死 区 P2M |= 0x10; //输出模式 P2 |= 0x10; //起始高电平 } void PW1Interrupt(void) interrupt ISRPwm1 { int p; for(p=0;p<20000;p++){} for(p=0;p<20000;p++){} S0BUF = 0x99; //for text if((IEN4 & 0x08) == 0x08){ IEN4 &=~0x08; for(p=0;p<20000;p++){} for(p=0;p<20000;p++){} S0BUF = 0x66; //for text } }
测试:
普通PWM
死区PWM(就是取反的pwm)
单脉冲PWM
笔记:
Stay hungry, stay foolish
待续。。。