📄 timer_pwm.c
字号:
#include <reg52.h>
#include <intrins.h>
#include "inc/EXT_PUBLIC_VARIABLE.H"
#include "inc/CPUIO_DEF.H"
#include "inc/timer_pwm.h"
/**************************************************************************
最小时基: 1us //12兆晶体,工作在1T模式下
定时器类1: 定时范围为 2ms - 500ms
定时器类2: 定时范围为 500ms - 128s
**************************************************************************/
void Timer1() interrupt 3 using 2
{
static uchar cyctimer = 10;
static uchar plwtimer = 5;
// TH1 = FPTimr.RelodeValH;
// TL1 = FPTimr.RelodeValL;
TH1 = 0xfc;
TL1 = 0x66;
if( --cyctimer == 0 )
{
MOTPWM = 1;
cyctimer = FPTimr.CycleTimer;
plwtimer=FPTimr.PluseWTimer;
}
if( plwtimer != 0 )
{
if( --plwtimer == 0 )
{
MOTPWM = 0;
}
}
}
/**************************************************************************************
;;函数原型: PwmTime0_int (uint fc,uchar n);
;;函数功能: 初始化定时器0,用定时器0输出100hz-3khz,占空比可调整的
;;函数输入: 输出频率fc(100-3000)100hz-3khz,(小于10K)占空比N(1-9步进1)对应占空比10%-90%
;; N=0;占空比为1
;;函数输出: 无
;;函数返回值:使用24兆晶振,
***************************************************************************************/
void PwmTime0_int (uint fc,uchar n)
{
//定时器重载值
uint i;
i = 0xffff-62000/fc;
FPTimr.RelodeValH = i>>8; //定时时基是输出平频率的100倍
FPTimr.RelodeValL = i;
FPTimr.CycleTimer = 10; //周期定时器
FPTimr.PluseWTimer = n; //脉宽占空比定时器
// TH1 = FPTimr.RelodeValH;
// TL1 = FPTimr.RelodeValL;
TH1 = 0xfc;
TL1 = 0x66;
TR1 = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -