这个程序怎么编,有关单片机的

来源:百度知道 编辑:UC知道 时间:2024/05/07 02:46:16
一台钻床的主轴由一台主电机驱动,并分别由快进电机和工进电机控制钻头的进给,快进电机可正、反转。转头如果不在原位,则启动按钮SB失效,否则主轴电机转动,钻头按下列工步运行:
SB(启动按钮) SQ1(快进限位) SQ2(工进限位)
1---------快进--------->1--------工进--------->1

(延时1秒)

1<---------------------------------------------1
SQ3(原位限位)

.设计利用8031的P1口驱动电机时的接口线路;
.设计完成该控制过程的软件流程图;
.编写、调试源程序;

热情的人请加844966720,希望能得到你详细回答,谢谢

/* 程序详细功能介绍:
*利用取表的方法,使端口P0做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
*在用表格进行程序设计的时候,要用以下的指令来完成
*(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。
*(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。
*因此,只要把控制码建成一个表,而利用MOVC 工,@A+DPTR做取码的操作,
*就可方便地处理一些复杂的控制动作.
*/

#include <AT89X51.H>
unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x00,0xff,0x00,0xff,
0x01};
unsigned char i;

void delay(void)
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}

void main(void)
{

while(1)
{
if(table[i]!=0x01)
{
P0=table[i];
i++;
delay();
}
else
{
i=0;
}