在Keil仿真时单步运行没问题,全速运行时提示error65,Proteus仿真发现只有前三个电机运动,剩下两个没反应是什么原因?

2019-07-15 08:25发布

写了一个控制步进电机的程序,用来使各个电机依次运动。在Keil仿真时单步运行没有问题,全速运行时会提示error65,在proteus里仿真发现只有前三个电机运动,剩下两个没反应,程序是哪里出问题了吗 ,编译的时候没有提示出现错误
#include<reg51.h>
#define uint unsigned int

sbit CW1=P0^0;      //1号电机方向及时钟
sbit CLK1=P0^1;
sbit CW2=P0^2;   //2号电机方向及时钟
sbit CLK2=P0^3;  
sbit CW3=P0^4;   //3号电机方向及时钟
sbit CLK3=P0^5;  
sbit CW4=P0^6;    //4号电机方向及时钟
sbit CLK4=P0^7;  
sbit CW5=P2^0;    //5号电机方向及时钟
sbit CLK5=P2^1;
void delay(int x)  
{
  int a,b;
   for(a=0;a<x;a++)
    for(b=0;b<120;b++)
        {}
}
void main()
{
   int i,j,l,m,n;
   CW1=1;
   CLK1=0;
   for(i=0;i<201;i++)  
   {
     CLK1=1;
     delay(10);
     CLK1=0;
     delay(10);
     if(i==200)break;
    }
   delay(50);  
   CW2=1;
   CLK2=0;
  for(j=0;j<201;j++)  
  {
    CLK2=1;
    delay(10);
    CLK2=0;
    delay(10);
    if(j==200)break;
   }
  delay(50);
   CW3=1;
  CLK4=0;
for(l=0;l<201;l++)  
{
  CLK3=1;
delay(10);
CLK3=0;
delay(10);
if(l==200)break;
}
CW4=1;
CLK4=0;
for(n=0;n<51;n++)  
{
CLK4=1;
delay(10);
CLK4=0;
delay(10);
if(n==50)break;
}
CW5=1;
CLK5=0;
for(m=0;m<51;m++)  
{
CLK5=1;
delay(10);
CLK5=0;
delay(10);
if(m==50)break;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
岩岛呐
1楼-- · 2019-07-15 17:11
我会告诉你真名 发表于 2018-5-15 14:32
楼主应该把报错内容贴出来的,你这样别人都不知道你错误在哪儿

*** error 65: access violation at C:0x0A00 : no 'execute/read' permission
是这样提示的,超出存储范围了吗?
岩岛呐
2楼-- · 2019-07-15 21:43
人中狼 发表于 2018-5-15 13:44
含有break的行都可以去掉,本身for就是一个到条件就自动退出的循环,不需要用break

*** error 65: access violation at C:0x0A00 : no 'execute/read' permission
把if break语句去掉了,command窗口这样报错
凤谜毂
3楼-- · 2019-07-16 02:08
 精彩回答 2  元偷偷看……
凤谜毂
4楼-- · 2019-07-16 03:07
不知道你使用的是51开发板还是最小系统或是直接用51芯片,51芯片上的P0引脚不能直接使用,必须接上电阻才能使用
人中狼
5楼-- · 2019-07-16 08:08
试试把int改成uint
CHNlyt
6楼-- · 2019-07-16 09:56
学习学习。。。。

一周热门 更多>