|
关于8255A控制步进电机的运动,仿真不出来,请高手指点,内附程序
[复制链接]
本人现在做一个项目,其中一部分是用8255的A口控制步进电机的运动,采用的计时器0中断的方式,即每一次进入中断,就将数发送到8255的A口输出,去控制电机,在仿真的时候数没办法送进去。
大致的程序如下,由于是整个项目中的一部分,我就截取相关的一部分:
#define COM8255 XBYTE[0x3fff]
#define PA8255 XBYTE[0x27ff]
#define PB8255 XBYTE[0x2fff]
#define PC8255 XBYTE[0x37ff] //初始化
uchar code bapai[]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06}; //四相八拍步进电机控制数
void init()
{
count=0;
COM8255=0x80;
TMOD=0x21;
TH1=0xfd;
TL1=0xfd; //定时器1是其他部分使用的,可不看
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
TR1=1;
}
void timer0() interrupt 1 //定时器0中断,控制步进电机的动作
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i=count;
count++;
if(i<8)
{
PA8255=bapai;
//delay(1000); //延时一下,为了便于观察电机的运动,无实际作用
}
else
{
PA8255=bapai[0];
// delay(1000);
count=1;
}
}
另,如果将8255的A口换成P1口,则仿真没有问题。硬件电路方面应该没什么问题。实际中P1口有他用,只能用8255
的A口,请高手指点,程序中有什么问题,感激不尽!!!
[ 本帖最后由 zhf120 于 2009-7-30 15:33 编辑 ]
|
|