我重新搞了一下,但是他放在仿真里第四个灯的亮度不够,是为啥呢 #include <reg51.h> #define uint unsigned int void delay(uint z); sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit K5=P1^4; sbit D1=P0^0; sbit D2=P0^1; sbit D3=P0^2; sbit D4=P0^3; sbit D5=P0^4; void main() { while(1) { D1=D2=D3=D4=D5=1; if(K1==0) { D1=0; delay(1000); D1=1; delay(1000); } if(K2==0) { D2=0; delay(1000); D2=1; delay(1000); } if(K3==0) { D3=0; } if(K4==0) { D4=0; } if(K5==0) { D5=0; delay(1000); D5=1; delay(1000); } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } |
改成二楼贴的程序就OK |
改成二楼贴的程序 |
![]() |
while(1) { ZZ=0; delay(); ZZ=1; delay(); }这个while循环,系统死机了,出不来 |
刚开始学3天就能到这程度,那应该是要表扬的了,我都是初中开始学电路,那时只有理论,到了大学才能自己搭电路实践一下,用了这么多年,差太多了,没法比 |
程序死在循环中了 |
程序死在循环中出不去了 |
大爷您说话真刺激,刚开始学3天,我要是懂我也不会发帖了,希望在你不擅长的事儿上也有人这么激励你,谢谢昂 |
楼主对基本电路可以说一窍不通,连基本的常识都不了解,89c52只有输出0才有20mA电流,输出1几乎没有电流,楼主LED接反了。LED限流电阻选5k,是闭着眼睛选的吧,欧姆定律是不是忘了。 |
#include<reg51.h> sbit ZZ=P2^0; sbit YZ=P2^1; sbit QD=P2^2; sbit HD=P2^3; sbit DD=P2^4; sbit ZUOZ=P1^0; sbit YOUZ=P1^1; sbit QIAND=P1^2; sbit HOUD=P1^3; sbit DAOD=P1^4; void delay() //定义延迟函数 { unsigned char a,b; for(a=0;a<200;a++) for(b=0;b<200;b++); } void key() //按键处理函数 { if(ZUOZ==0) { delay(); if(ZUOZ==0) { ZZ=~ZZ; } while(!ZUOZ); } if(YOUZ==0) { delay(); if(YOUZ==0) { YZ=~YZ; } while(!YOUZ); } if(QIAND==0) { delay(); if(QIAND==0) { QD=~QD; } while(!QIAND); } if(HOUD==0) { delay(); if(HOUD==0) { HD=~HD; } while(!HOUD); } if(DAOD==0) { delay(); if(DAOD==0) { DD=~DD; } } } void main(void) //主函数 { while(1) { key(); } } |
你的程序这么多个while(1),你觉得没问题吗? |