📄 test0.c
字号:
#include "LF2407REGS.h"
#define PWMT 1000 //PWM周期,50us,50/(1/(4*10)*2)
#define NMAX 3000 //电机最高转速,r/min
#define SPER 100 //100个PWM周期速度调节一次
// 该中断服务程序主要是为了防止干扰,不做任何其它操作
void interrupt nothing()
{
return; // 中断直接返回
}
void interrupt adcint()
{
return; // 中断直接返回
}
void main(void)
{
asm(" setc CNF");
asm(" clrc OVM");
asm(" setc SXM");
asm(" setc INTM");
*WDCR=0x068;
*SCSR1=0x0284;
*T2PER = 0X0FFFF; //最大周期
*T2CNT = 0X0000;
*T2CON = 0X9870; //定向增减,允许编码接口
*T1PER = 500; //PWM设置,周期50微秒,2*500*(1/20)us
*T1CNT = 0X0000;
*ACTRA = 0X0096; //PWM1,4高有效,2,3低有效
*DBTCONA = 0X01F4; //死区1.6微秒,死区定时周期1个(X/32),0.05*32=1.56us
*CMPR1 = 250; //占空比0.5,500*0.5,(还可以增加实现6个pwm)
*CMPR2 = 250;
*COMCONA = 0X8200; //允许比较,T1下溢重载
*T1CON = 0X0840; //连续增减计数,内部时钟,不分频
*GPTCONA = 0X0100; //T1周期中断标志启动AD转换
*MCRA = 0X03D8; //引脚设置为PWM1-4,QEP1-2
*IMR = 0X0020; //允许INT6中断
*IFR = 0X0000; //清标志
*EVAIFRA = 0X0000;
*EVAIFRB = 0X0000;
*EVAIFRC = 0X0000;
*EVAIMRA = 0X0000;
*EVAIMRB = 0X0000;
*EVAIMRC = 0X0000;
asm(" clrc INTM");
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -