学到定时器 和 中断系统了 于是乎 又边了 一个 能调速的啊大神给看看 这样 能行不。4个中断全用上了!赤纬 正反转只能直接控制驱动板了!
#include <reg52.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit DIR = P1^3;
unsigned int a;
unsigned int d;
void delay(int z)
{
unsigned int b,c;
for(b=z;b>0;b--)
for(c=20;c>0;c--);
}
void main()
{
TMOD = 0X11; //定时器0,1。16位定时器
TH0 = 0X45;
TL0 = 0X96; //装载初值17814.
TR0 = 1; //启动定时器0
ET0 = 1; //启动定时器0中断
TH1 = 0X45;
TL1 = 0X96; //装载初值17814.
TR1 = 1; //启动定时器1
ET1 = 1; //启动定时器1中断
IT0 = 0; //低电平触发
EX0 = 1; //外部中断0允许
IT1 = 0; //低电平触发
EX1 = 1; //外部中断1允许
EA = 1; //开总中断
while(1); // 等待中断
}
void waizhong0() interrupt 0 //开外部中断0加速
{
LED1 = ~LED1;
delay(5);
LED1 =~LED1;
}
void waizhong1() interrupt 2 //开外部中断1减速
{
delay(1000);
LED1 =~LED1;
}
void timer0() interrupt 1 //定时器0中断服务程序
{
LED1 = ~LED1; //电机脉冲
}
void timer1() interrupt 3 //定时器1中断服务程序
{
LED2 = ~LED2; //电机脉冲
} |