学校电子竞赛--
我在P1.0口接了一个LED,并且通过程序了解单片机工作情况<br />我设计的电路和程序如下:<br />#include <reg51.h><br />#include <stdio.h><br />void delay(unsigned char i);<br />sbit p10 = P1^0;<br /><br />void main()<br />{<br /> <br /> while(1)<br /> {<br /> p10 = 0; <br /> delay(3000); //延时 3000*1=3秒<br /> p10 = 1;<br /> }<br /> }<br /><br /><br />void delay(unsigned char i)<br />{<br />unsigned char j,k;<br /> for(j=i;j>0;j--)<br /> {<br /> for(k=120;k>0;k--) {} /*excute for 1ms*/<br /> }<br />}<br />结果,上电后,发觉LED灯不亮,我重新上电后发觉LED灯亮,但不延时灭.<br />不知道问题出在何处,还望指教!<br />电路设计和程序问题?<br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20071/200711711236822.rar'>https://bbs.21ic.com/upfiles/img/20071/200711711236822.rar</a>变量对不上
unsigned char j,k;<br /><br />delay(3000); //延时 3000*1=3秒<br /><br />变量定义错了。CHAR最大就是255回复
程序修改过了,但发现还是有问题,LED灯一直亮.请帮忙看看硬件图,谢谢!解压文件就可以看见PROTEL图.看这里,漏了一行。
用仿真器单步运行一下就能发现问题啊。<br />下次注意<br /><br /><br />while(1)<br />{<br /> p10 = 0; <br /> delay(3000); //延时 3000*1=3秒<br /> p10 = 1;<br /> delay(3000); //**********************延时 3000*1=3秒<br /> }<br />}<br />谢谢!
LED还是不正常显示.请大虾们帮看看电路硬件没问题
void main()<br />{<br /><br />while(1)<br />{<br /> p10 = 0; <br /> delay(3000); //延时 3000*1=3秒<br /> p10 = 1;<br /> delay(3000); //延时 3000*1=3秒<br /> }<br />}<br /><br /><br />void delay(unsigned int i)<br />{<br />unsigned char k;<br />unsigned int j;<br /> for(j=i;j>0;j--)<br /> {<br /> for(k=120;k>0;k--) {} /*excute for 1ms*/<br /> }<br />}服了你了
unsigned char k;<br />unsigned int j;<br /> for(j=i;j>0;j--)<br /> {<br /> for(k=120;k>0;k--) {} /*excute for 1ms*/<br /> }<br />}<br />////////////////////<br />unsigned char k;<br />unsigned int j;<br /><br />for 里面的条件是j>0,k>0 ,楼主请告诉我 j,k 啥时候小于零?楼上正确
变量不能定义成 unsigned ,不然永远不会小于0。<br />j,k 最后会等于零然后循环终结
页:
[1]