本帖最后由 macboa 于 2022-3-24 10:12 编辑
|
macboa 发表于 2022-3-27 10:37 没救了 砍掉重炼吧 |
各位大佬 已补充,麻烦再给看看吧???![]() ![]() ![]() ![]() ![]() |
macboa 发表于 2022-3-25 23:35 ![]() |
macboa 发表于 2022-3-24 11:43 1. 程序不全,头文档呢?sbit呢?delay1000ms()呢? 2. 程序结构极其不合理,不要while(1)包while(1)包while(XXX) 3. 按键扫描太累赘,为什么看Magnetic_Switch0是不是0时还要看其它Magnetic_Switch?你会同时按其它键吗? 4. i是unsigned char,最大是255,不可能i=6000; |
SURUBU1976 发表于 2022-3-24 12:20 程序在二楼 |
SURUBU1976 发表于 2022-3-24 12:20 程序在二楼 |
还是不行 愁人。仿真没问题。 |
lkc8210 发表于 2022-3-23 16:19 void main(void) { unsigned char flag=1; unsigned char getflag0=0,getflag1=0,getflag2=0,getflag3=0,getflag4=0; unsigned char i=0; unsigned char j=0,k=0;const unsigned char setMagnetic_Switch[5]={0,1,2,3,4}; unsigned char getMagnetic_Switch[5]={0,0,0,0,0}; P0M0=0x00; P0M1=0x00; P1M0=0x00; P1M1=0x00; P2M0=0x00; P2M1=0x00; P3M0=0x00; P3M1=0x00; P4M0=0x00; P4M1=0x00; P5M0=0x00; P5M1=0x00; Magnetic_Switch0=1; Magnetic_Switch1=1; Magnetic_Switch2=1; Magnetic_Switch3=1; Magnetic_Switch4=1; Speaker_Switch0=1; Speaker_Switch1=1; Speaker_Switch2=1; Speaker_Switch3=1; Speaker_Switch4=1; getLED0=1; getLED1=1; getLED2=1; getLED3=1; getLED4=1; Right_Out1=1; Right_Out2=1; Wrong_Out=1; while(1) { //获取 while(j<5) { if(Magnetic_Switch0==0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag0==0) { getMagnetic_Switch[j]=0; getflag0=1; getLED0=0; j++; } if(Magnetic_Switch1==0&&Magnetic_Switch0!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag1==0) { getMagnetic_Switch[j]=1; getflag1=1; getLED1=0; j++; } if(Magnetic_Switch2==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch3!=0&&Magnetic_Switch4!=0&&getflag2==0) { getMagnetic_Switch[j]=2; getflag2=1; getLED2=0; j++; } if(Magnetic_Switch3==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch4!=0&&getflag3==0) { getMagnetic_Switch[j]=3; getflag3=1; getLED3=0; j++; } if(Magnetic_Switch4==0&&Magnetic_Switch0!=0&&Magnetic_Switch1!=0&&Magnetic_Switch2!=0&&Magnetic_Switch3!=0&&getflag4==0) { getMagnetic_Switch[j]=4; getflag4=1; getLED4=0; j++; } } j=0; //比较 while(1) { if(setMagnetic_Switch[k]==getMagnetic_Switch[k]) { k++; if(k<5) continue; k=0; Wrong_Out=1; Right_Out1=0; delay1000ms(); while(getLED0==0||getLED1==0||getLED2==0||getLED3==0||getLED4==0) { if(Speaker_Switch0==0) { getLED0=1; } if(Speaker_Switch1==0) { getLED1=1; } if(Speaker_Switch2==0) { getLED2=1; } if(Speaker_Switch3==0) { getLED3=1; } if(Speaker_Switch4==0) { getLED4=1; } } Right_Out2=0; Wrong_Out=1; delay1000ms(); i=6000; while(i>0) { delay1000ms(); i--; } i=0; break; } else { getLED0=0; getLED1=0; getLED2=0; getLED3=0; getLED4=0; delay1000ms(); getLED0=1; getLED1=1; getLED2=1; getLED3=1; getLED4=1; delay1000ms(); getLED0=0; getLED1=0; getLED2=0; getLED3=0; getLED4=0; delay1000ms(); getLED0=1; getLED1=1; getLED2=1; getLED3=1; getLED4=1; delay1000ms(); getLED0=0; getLED1=0; getLED2=0; getLED3=0; getLED4=0; delay1000ms(); getLED0=1; getLED1=1; getLED2=1; getLED3=1; getLED4=1; delay1000ms(); Wrong_Out=0; Right_Out1=1; break; } } Magnetic_Switch0=1; Magnetic_Switch1=1; Magnetic_Switch2=1; Magnetic_Switch3=1; Magnetic_Switch4=1; getflag0=0; getflag1=0; getflag2=0; getflag3=0; getflag4=0; Speaker_Switch0=1; Speaker_Switch1=1; Speaker_Switch2=1; Speaker_Switch3=1; Speaker_Switch4=1; |
关键字有没有用对,程序? |
程序在二楼,可能正在审核中 |
本帖最后由 macboa 于 2022-3-24 11:42 编辑 程序在二楼 |
macboa 发表于 2022-3-23 16:48 程序呢? |
各位大佬 麻烦再给小弟看看 |
gongnn 发表于 2022-3-24 08:30 电路图是错的 已改成灌电流了 |
这个电路图是错的,实际是采用灌电流。加了限流电阻。 麻烦各位大佬在给看看程序。 |
P0口配置位就不对了,得推挽才能高电平驱动LED。 |
非凡科技 发表于 2022-3-23 20:59 已经改为灌电流了,加了电阻,这个图是个缩略图 ,,不知道为啥程序发不上来 |
实际不能这样设计电路,单片机iO正极驱动能力很弱的,而且LED要加限流电阻的。对于STC8芯片要配置IO口模式的,默认是高阻抗。你也没有贴出程序, |
lkc8210 发表于 2022-3-23 16:19 已经发了哈 。麻烦看看 |
限流电阻都不需要的嘛 |
把程序贴上来哦 |
程序呢?线路图呢?上传图片呢?什么都没有,人家想帮你也帮不上呀 |
没程序,靠猜还是靠起卦? |