📄 a.c
字号:
/* ***************** 写程序者 *********************
控制角度为9度(每步进为9度步进)
***************************************************/
# include <at89x51.h>
unsigned char codes[2][8]={{0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03}, //9,18,36,45,54,63,72,81度 顺时针
{0x0b,0x09,0x0d,0x0c,0x0e,0x06,0x07,0x03}}; //9,18,36,45,54,63,72,81度 逆时针
unsigned char counts,flag,t;
// 度数,正/反转,速度控制
delay(unsigned char x) //延时
{
unsigned char i;
for( i=0;i<x;i++);
}
main()
{
TMOD=0x01; //定时器初始化
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(P0_0==0) //判断正转按键是否按下
{
delay(5);
if(P0_0==0) flag=0; //判断是否真正按下
}
if(P0_1==0) //判断反转按键是否按下
{
delay(5);
if(P0_1==0) flag=1; //判断是否真正按下
}
}
}
void motor() interrupt 1
{
t++; //控制速度
if(t==8)
{
t=0;
P1=codes[flag][counts]; //转动
counts++;
if (counts==8) counts=0; //角度重置
}
TF0=0; //重新计时
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -