Keil和 Proteus联调有按键的电路怎么操作?
比如:
C程序:
#include<reg52.h>
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
#define UP 20
#define DOWN 30
#define STOP 40
void delay() //延时程序
{
unsigned i,j,k;
for(i=0;i<0x02;i++)
for(j=0;j<0xd2;j++)
for(k=0;k<0xff;k++);
}
void main()
{
unsigned char temp;
while(1)
{
if(p10==0)
{
temp=UP; //控制反转
P2=0XFF;
delay();
}
if(p11==0)
{
temp=DOWN;
// P2=0XFF;
// delay();
}
if(p12==0)
{
temp=STOP;
}
switch(temp)
{
case DOWN:P2=0X03; //控制反转
delay();
delay();
P2=0X06;
delay();
delay();
P2=0X0c;
delay();
delay();
P2=0X09;
delay();
delay();
break;
case UP:P2=0X03; //控制正传
delay();
delay();
P2=0X09;
delay();
delay();
P2=0X0C;
delay();
delay();
P2=0x06;
delay();
delay();
break;
case STOP: //控制停止
P2=0XFF;
delay();
delay();
break;
}
}
}
Proteus电路图:
如图所示是一个步进电机的控制电路,其中KEY1为反转,KEY2为正转,联调时的情形是这样的:
如果单独用Keil仿真,P1口的状态可以用如图所示小框框手动更改,但是如果联调,这个小框框就按不动了。另外,如果从Proteus里按下按键,电路正常工作,但是Keil里的P1和P2口状态却不改变。
这是什么问题??
求高手指点迷津!!!拜谢!!!
又出现问题了大神,求助!
按照您说的联调时把红点点住了,可是,点上了以后,按钮两边点评竟然还是一高一低,点击单步运行,程序根本走不到按键代表的那个程序里。又试了试全速运行,这时候按钮两边电平才恢复一样。
怎么在单步运行时让按钮两边电平一样呢?或者说怎么让单步运行时程序走到按钮代表的程序里呢?
点击红点,按键闭合,两边的电平,应该相同的。
两边电平竟然还是一高一低?没有见过。