moon20000boy 发表于 2020-5-13 23:38 我直接用10定义串口电压测出来是对的,应该是led电路出问题了,我感觉可能是三极管的原因,我去查查 |
我代码改了一下,烧录进去还是没反应。我怀疑是晶振坏了,我测了一下晶振显示数值是2.03-2.04和2v-1.98v。但是换了几个晶振好像压差都是0.4v、0.5v。led还是常量不闪烁 那就是你再改下你代码中的 led = ~led; 说实话位反转我从来没用过取反,我都是直接异或反转电平,你可以试试 led^=led; 取反这个操作是按位取反,就1位的这种不知道是不是不应该这么操作,我都是异或,你试试吧 |
moon20000boy 发表于 2020-5-12 22:02 我代码改了一下,烧录进去还是没反应。我怀疑是晶振坏了,我测了一下晶振显示数值是2.03-2.04和2v-1.98v。但是换了几个晶振好像压差都是0.4v、0.5v。led还是常量不闪烁 |
一楼说得很对,就是延时问题,你把这个void delay_100(unsigned char j) 改为void delay_100(unsigned long j) ,这样才符合你要输入值1000000 |
原来你这个函数也是从官方软件里提供的,你可以设置成延时100ms,这样你直接调用里写Delay100ms(5);延时500ms就可以明显看到结果了
![]() |
我上边说错了,你要是赋值1000000,unsigned int 最大才65535,仍然盛不下,得需要unsigned long了,建议你调整那个delay函数 |
你好,你这个函数void delay_100(unsigned char j) 参数是unsigned char 类型,最大255,应该改成unsigned int 类型,因为你调用时赋值是1000000,程序没有报错,运行的时候估计最大只能延时255*100us,或者干脆是1000000直接取了低位,延时太小,所以你肉眼看不到闪烁,一直为亮 |