|
看了很多文章,才想出来的这个,希望大家指点下,新手上路,渴望指点
/*
* author: 肆意年华-1
* function: PWM 控制电机速度
* date;2013-7-22 11:05:55
* 版本: vertion 1.0
*/
# include<reg52.h>
sbit IN1 = P1^0; //驱动电机信号的输出端口
sbit IN2 = P1^1;
sbit ENA = P1^2; //PWM 输出端
void int1_init(); //定时器1初始化 声明
/*
* 函数名称:主函数
*
*/
void main()
{
IN1 = 1; //电机逆时针转
IN2 = 0;
int1_init(); //定时器1初始化
while(1); //死循环
}
/*
* 函数名称:中断函数
*
*/
void int1_interrupt() interrupt 3
{
static unsigned char M_count; // 定义半个周期 M_count
ENA = 0;
M_count++;
if(M_count == 2)// 半个周期 ---占空比 %50
{
ENA = ~ENA;
M_count = 0; //重新计时
}
TH1 = (65536-2000)/256; //高电平持续的时间
TL1 = (65536-2000)%256;
}
void int1_init()
{
TMOD = 0X10; // Timer1 同时配置模式1,16位计数模式
TH1 = (65536-2000)/256; //定时时间 2ms
TL1 = (65536-2000)%256;
TR1 = 1; //打开定时器1
ET1 = 1; //允许定时器1溢出中断
EA = 1; //打开中断
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|