具体就是通过改变定时器的时间来实现加减速过程,但不明白是哪里错了,老是实现不了,具体程序如下:
#include<reg52.h>
sbit A1=P1^0; //定义脉冲输出
sbit B1=P1^1; //定义方向输出
unsigned int i=0;
unsigned int j=1000;
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_
timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-j)/256;//TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TL0=(65536-j)%256; //TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer0();
while(1);
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr() interrupt 1
{
TH0=(65536-j)/256;
TL0=(65536-j)%256;
if(i<=80) // 匀速
{
B1=0; // 正方向
A1=~A1; //用示波器可看到方波输出
i++;
j=j-10;
}
if(i>80&&i<=6000) // 匀速
{
B1=0; // 正方向
A1=~A1; //用示波器可看到方波输出
i++;
}
if(i>6000&&i<=6080) // 减速
{
B1=0; // 正方向
A1=~A1; //用示波器可看到方波输出
i++;
}
if(i>6080) // 停
{
TR0=0;
}
}
一周热门 更多>