|
/*前段时间在此处发表了关于直流电机pwm调速时间的控制的一个帖子,现已经改好,并测试通过
现修改后贴出来!
IAR软件编程
*/
#include <stdio.h>
#include <iom16.h>
#include <intrinsics.h>
static long time;
struct PUMP_DATA {
unsigned long pump_pwm;
unsigned long pump_time;
};
struct PUMP_DATA pumdate,*pump_p=&pumdate;
#pragma vector=TIMER1_OVF_vect //应该改成这个中断0.005s
__interrupt void timer1(){
time++;
if(time>=pump_p->pump_time)
{
DDRD_DDD4=0;
OCR1B=0;
}
}
void pump_bsp(struct PUMP_DATA *p_pump)
{
DDRD_DDD4=1;
OCR1B=p_pump->pump_pwm;
}
void init_time1()
{
TCCR1A=0X20;
TCCR1B=0X11;
ICR1=20000;
TIMSK=TIMSK|(1<<TOIE1);
__enable_interrupt();
}
void main()
{ OSCCAL=0xA7; //8MHZ频率校正
pump_p->pump_pwm=19000; //PWM占空比
pump_p->pump_time=12000; //定时运行的时间 1分钟
init_time1();
pump_bsp(pump_p);
}
-----此内容被zxjtam于2005-10-08,11:02:57编辑过 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|