计算机控制 下载本文

(3)假设用此步进电机带动一个滚动丝杠,每转动一周(正向)相对位移4mm,试编写一个移动8mm的三相单拍控制程序。

解:

(3)假设8255的端口地址分别为78FFH-7BFFH。步进电机走6步为2周。则相应的程序如下: #include #include

#define uchar unsigned char

#define COM8255 XBYTE[0x7bff] //命令口地址 #define PA8255 XBYTE[0x78ff] //A口地址 #define PC8255 XBYTE[0x7aff] // C口地址 uchar CONTROL[3]={0x01, 0x02, 0x04}; //A- B-C

void delay(void) //延时 { unsigned char i; for (i=50;i>0;i--); }

void main(void) {

COM8255=0x90; //PC低位置输出;A口输入 _nop_();

while(( 0x02 & PA8255)==1); // 判断8255是否启动,若为1等待,若为0

继续

while(( 0x01 & PA8255)==0); // 判断8255是否正转,若为0反转,若为1

正转

for(i=0,j=0;i<6;i++)

{

PC8255=CONTROL[j]; j++;

delay(); if(j==3) j=0; }

}