⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 2407的 PWM不同占空比的波形 但不带死区
💻 C
字号:
// 该程序利用EVB模块的PWM7--PWM12引脚产生不同占空比的方波
#include	"f2407_c.h"
//  屏蔽中断程序        
void inline disable() 
{
	asm(" setc INTM");
}
// 系统初始化子程序
int  initial()
{
	asm(" setc	SXM");				// 符号位扩展有效
	asm(" clrc	OVM");				// 累加器中结果正常溢出
	asm(" clrc	CNF");				// B0被配置为数据存储空间
	SCSR1=0x81FE;				// CLKIN=10M,CLKOUT=4CLKIN=40M
	WDCR=0x0E8;				// 不使能看门狗,因为SCSR2中的WDOVERRIDE
		     					// 即WD复位后的缺省值为1,故可以用
		     					// 软件禁止看门狗
	IMR=0x0000;					// 禁止所有中断
	IFR=0x0FFFF;				// 清除全部中断标志,"写1清0"
	WSGR=0x00;					// 禁止所有的等待状态
}
// EVB模块的PWM初始化程序
int  pwminitial()
{
	MCRC=MCRC|0x007E;		// IOPE1-6被配置为基本功能方式,PWM7-12
	ACTRB=0x0666;				// PWM12,10,8 低有效,PWM11,9,7 高有效
	DBTCONB=0x00;				// 不使能死区控制
	CMPR4=0x1000;
	CMPR5=0x3000;
	CMPR6=0x5000;
	T3PR=0x6000;				// 设置定时器3的周期寄存器,并设置CMPR4-6,以确定不
                                // 同的输出占空比
	COMCONB=0x8200;			// 使能比较操作
	T3CON=0x1000;				// 定时器3为连续增计数模式
}
// 该中断服务程序主要是为了防止干扰,不做任何其它操作
void	interrupt nothing()
{
	return;						// 中断直接返回
}
// 主程序
main( )
{  

  disable();						// 总中断禁止
	initial();						// 系统初始化
	pwminitial();					// PWM输出初始化
	T3CON=T3CON|0x0040;		// 启动定时器3
	while(1)
	{
		;                     //等待中断发生
	}
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -