📄 pwm.c
字号:
/********************************************
本程序通过2407的pwm单元产生带有死区的pwm波形
*********************************************/
#include "register.h"
initial()
{
asm(" setc INTM ");
asm(" setc SXM ");
asm(" clrc OVM ");
asm(" clrc CNF ");
*SCSR1=0X81FE; //CLKIN=10M,CLKOUT=4*CLKIN=40M
*WDCR=0X0E8;
*IMR=0X0000;
*IFR=0X0FFFF;
WSGR=0X00; //禁止所有等待状态
}
int initialpwm()
{
*MCRA=*MCRA|0X0CC0; //初始化IO口
*ACTRA=*ACTRA|0X0606;//PWM1,5高位有效,PWM2,6低位有效
*DBTCONA=0X0F3F;/*使能死区单元,(32*15)/CLKOUT=480/CLKOUT=12us
比较单元1有效,单元3无效*/
*CMPR1=0X3A98;
*CMPR3=0x3A98; //(1-1/4)*20000=15000,占空比为1/4
*T1PER=0X4E20; /*设置Timer1的周期寄存器值,定时器周期为2*20000/CLKOUT=1ms
对称输出方式*/
*COMCONA=0x8200; //使能pwm
*T1CON=0X0800; //定时器为连续增减计数模式
void interrupt nothing()
{
return;
}
main()
{
initial();
initialpwm();
*T1CON=*T1CON|0X0040;
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -