大佬们求救!!流水灯proteus仿真全是红点

程序要求:

img


我写的程序代码:
#include<reg52.h>
#include<intrins.h>
sbit KEY=P3^3;
void delay10ms(void);
void main()
{
char num=0xfe;
KEY=1;
while(1)
{
if(KEY==0)
{
delay10ms(); //消抖
if(KEY==0)
{
P1=num;
//num=crol(num,1); //_crol_循环左移(乘2)
num=cror(num,1); //_cror_循环右移(除2)
}
while(!KEY); //消抖 刚刚松开始
}
}
}

void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
我的实验原理图:

img


要求的实验原理图:

img


这个实验原理图我感觉我连接的没问题,vcc的+5v是我后来加上去的。
问题描述:仿真之后就是像图片那样全是红点,而且灯一个也不亮,俺是小白可能程序整的不对,希望各位大佬具体教一下

img


还有俩问题……如上图

程序必须依据电路图和题目要求写sbit KEY=P3^3;就不符合题目和电路图了,应改为sbit KEY=P0^7;才对.
题目要求KEY==1时开始循环左右,为0时不变,程序写if(KEY==0)显然与题目相反.

建议参考现成的例子,先学习一下流水灯的逻辑。

https://blog.csdn.net/qq_43279579/article/details/108908566

指出几个明显的问题:

  1. 题目要求P0.7作为输入, 实现用了KEY=P3.3.
  2. 灯要显示出流水的效果,需要控制每个状态的停留时间。按视觉暂留的效果,可以参考例子设置50ms,再根据需要调整。
  3. 一边显示流水灯,一边检测按键状态,同步控制最好用状态变量来记录,才能把时间控制做得比较准确。

sbit KEY=P3^3;你的按键在哪里?