• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

51单片机的BUG

void main()

{

    while (1)

 {

     Delay300ms() ;

      k1=~k1;      

   if(k1==1)    

          led=1;   

  else    

         led=0;  

 }

}

      k1和led都是IO口;实现的功能就是IO口k1取反,然后if检测k1状态,然后led亮灭while循环300ms一次;

先不说结果,大家觉得会是怎么样的结果;

    要是你爸程序烧写进去,肯定和你们想象的不一样;;

全部回复(6)
正序查看
倒序查看
2019-04-25 14:16

没有人测试么,要是你们烧写程序测试了就会发现led始终不会改变状态,也就是说if一只检测不到K1变成低电平了;

0
回复
Globl
LV.1
3
2019-04-28 18:42
这程序受控于端口电平,K1是改变不了IO口的也就是说端口电平默认是高电平,取反就为0,因此if条件不成立会执行else中的语句
0
回复
2019-04-29 14:27
@Globl
这程序受控于端口电平,K1是改变不了IO口的也就是说端口电平默认是高电平,取反就为0,因此if条件不成立会执行else中的语句
是这样的,程序不应该是等到端口反转OK了,这个语句才算运行完毕?
0
回复
2019-05-02 12:16
好好看看io的 几种技术 输入 输出 高阻 开漏 上拉 下拉 及默认电平
0
回复
hp34401a
LV.1
6
2019-05-04 19:42
见过太多所谓BUG就是自己水平的问题。无兴趣看了 ~~~~
0
回复
2019-05-06 11:27
@hp34401a
见过太多所谓BUG就是自己水平的问题。无兴趣看了~~~~
其实程序很简单,就是IO反转之后马上用if检测IO状态,总是检测不到;51单片机IO已经初始化了,正常的弱上拉状态;
0
回复