程序要求:

我写的程序代码:
#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--);
}
我的实验原理图:

要求的实验原理图:

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

还有俩问题……如上图
程序必须依据电路图和题目要求写sbit KEY=P3^3;就不符合题目和电路图了,应改为sbit KEY=P0^7;才对.
题目要求KEY==1时开始循环左右,为0时不变,程序写if(KEY==0)显然与题目相反.
建议参考现成的例子,先学习一下流水灯的逻辑。
https://blog.csdn.net/qq_43279579/article/details/108908566
指出几个明显的问题:
- 题目要求P0.7作为输入, 实现用了KEY=P3.3.
- 灯要显示出流水的效果,需要控制每个状态的停留时间。按视觉暂留的效果,可以参考例子设置50ms,再根据需要调整。
- 一边显示流水灯,一边检测按键状态,同步控制最好用状态变量来记录,才能把时间控制做得比较准确。
sbit KEY=P3^3;你的按键在哪里?