基于Proteus的51系列单片机设计与仿真
源代码在线查看: 直流电机调速控制.c
/***********************************************************************
直流电机转速控制,按下K1键,电机加速转动,按下K2键,电机减速转动
************************************************************************/
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit P2_1=P2^1; //定义位变量
long a=355;
bit flag=1;
void int0() interrupt 0 // 使占空比加大
{
a+=3000;
if(a>=65535)
a=65534;
}
void int1() interrupt 2 // 使占空比减小
{
a-=3000;
if(a a=0;
}
void time0_server_(void) interrupt 1
{
if(flag==1)
{
P2_1=0;
TH0=65535-((65535-a)/256);
TL0=65535-((65535-a)%256);
}
if(flag==0)
{
P2_1=1;
TH0=(65535-a)/256;
TL0=(65535-a)%256;
}
flag=~flag;
}
void Init_t0(void) //初始化
{
TMOD=0X01; //选择方式1
TH0=(65535-a)/256;
TL0=(65535-a)%256;
ET0=1;
TR0=1;
EX0=1; //打开外部中断0
IT0=1; //下降沿触发中断INT0
EX1=1; //打开外部中断1
IT1=1; //下降沿触发中断INT1
EA=1;
}
void main(void)
{
P2_1=1;
Init_t0(); //初始化
while(1);
}