C语言 步进电机的正反转 启停 控制程序 求解释

main(){lcd_init();//³õʼ»¯LCDdelay(10);init_disp();TMOD... main()
{
lcd_init(); // ³õʼ»¯LCD
delay(10);
init_disp();
TMOD=0x02;
TH0=0x06;
TL0=0x06;
EA=1;
ET0=1;
flag_cw_ccw=1; //ĬÈÏΪÕýת
EX1=1;
EX0=1;
IT0=1;
IT1=1;
while(1)
{
if(flag_status) //Ϊ1ʱ ¹¤×÷
{
for(r=0;r<64;r++)
{
motor_cw_ccw();
if(flag_status==0)break;//Í£Ö¹ ʵʱÏàÓ¦Í˳ö
}
}

}
}
//¶¨Ê±Æ÷ÖжÏ×Óº¯Êý
void timer0() interrupt 1
{
count=count+1;
if(count>=tab[sp])
{
count=0;
flag=1;
}

}
//ÍⲿÖжÏ0 ÉêÇëÖжÏ
void INIT0() interrupt 0
{
scan_key();//Ö÷ÒªÓÃÓÚ°´¼üµÄʶ±ð ¿ìËÙµÄʱ¼äÏàÓ¦
}
//ÍⲿÖжÏ1 ÉêÇëÖжÏ
void INIT1() interrupt 2
{
BYTE temp;
flag_status=!flag_status;
delay(30);

if(flag_status) //Ϊ1ʱ ¹¤×÷ÔËת
{
lcd_pos(0x0); //
add = 0;
while(dis1[add] != '\0')
{
lcd_wdat(dis1[add]); // ÏÔʾ×Ö·û"run "
add++;
}
}
else //Ϊ0ʱ Á¢¼´Í£Ö¹
{
lcd_pos(0x0); //
add = 0;
while(dis1[add] != '\0')
{
lcd_wdat(dis0[add]); // ÏÔʾ×Ö·û"stop"
add++;
}
}
do
{
temp=P3;
temp&=0x08;
delay(30);
}while(temp!=0x08);

}
展开
 我来答
zhangsonglin_c
高粉答主

2014-05-23 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:7001万
展开全部
中断2,启动-停止切换(通过切换flag_status),显示状态。do-while是延时。
中断1,计数器count增1,如果达到预设的数值tab[sp],计数器归零,标志flag置1。这个好像与速度有关。通过调整延时时间来调整速度。
中断0,读键盘。没有scan_key()的源代码,不知道里面有些什么操作。
while(1){...}循环是电机运转,flag_status是状态,1转动,0停止。
没有看到与正转反转有关的代码。也许在motor_cw_ccw();函数里面,这个就是电机动一下的函数。

原程序不完整,没有相应函数、变量的定义及意义说明。难以确切理解。
更多追问追答
追问
我能不能给你发过去    帮我大概的解释下    过两天就答辩了
追答
782065873@qq.com,我试试
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式