直流电机的开环控制Keil c51源代码
//-----------------------函数声明,变量定义--------------------------------------------------------#include <reg51.h>#include <intrins.h>#include<ABSACC.H> 滑水鞋//-----------------------定义管脚--------------------------------------------------------sbit PWM=P1^0; //PWM波形输出 sbit DR=P1^1; //方向控制#define timer_data (256-100) //定时器预置值,12M时钟是,定时0.1ms#define PWM_T 100 //定义PWM的周期T为10msunsigned char PWM_t; //PWM_t为脉冲宽度(0~100)时间为0~10msunsigned char PWM_count; //输出PWM周期计数库顶切换阀unsigned char time_count; //定时计数 bit direction; //方向标志为//--------------------------------------------------------------------------------------------------// 函数名称:timer_init// 函数功能:初始化设施定时器//--------------------------------------------------------------------------------------------------void timer_init() { TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装) */ PCON=0x00; TF0=0; TH0=timer_data; //保证定时时长为0.1ms TL0=TH0; ET0=1; TR0=1; //开始计数 EA=1; //中断允许 }
//--------------------------------------------------------------------------------------------------
// 函数名称:setting_PWM
// 函数功能:设置PWM的脉冲宽度和设定方向
//--------------------------------------------------------------------------------------------------
void setting_PWM()
{
if(PWM_count==0) //初始设置
{减压蒸馏
PWM_t=20;
direction=1;
}
}塑料挂钩
//--------------------------------------------------------------------------------------------------
// 函数名称:IntTimer0
/
/ 函数功能:定时器中断处理程序
//--------------------------------------------------------------------------------------------------
void IntTimer0() interrupt 1
{
time_count++;
DR=direction;
if(time_count>=PWM_T)
{
time_count=0;
PWM_count++;
acceptlanguage setting_PWM(); //每输出一个PWM波调用一次
}
if(time_count<PWM_t)
PWM=1;
else
PWM=0;
}
//--------------------------------------------------------------------------------------------------
// 函数名称:main
// 用户主函数
// 函数功能:主函数
//--------------------------------------------------------------------------------------------------
void main()
{
timer_init();
setting_PWM();
}微波烧结炉