把a的值列印出来

列印成二进位去看

初学者一般是只会写,不懂调试,这样弊端很大。


看了代码,好像没什么问题,全局变数应该是一开始被初始化为0的,具体现象是怎样,一直只亮一个灯?还是同一个?


首先第一点

~1 = 1111 1110

~2 = 1111 1101

~3 = 1111 1100

~4 = 1111 1011

~5 = 1111 1010

也就是你的代码不会让其顺序点亮,点亮的顺序比较奇怪哈

另外找了半天这个原理图,p1埠和Led之间存在74HC573这个器件,你对这个器件没有任何操作

对于74HC573这个器件,你得操作其LE埠和OE埠

保证OE埠为0,LE埠为1,这样其输入电平才可等于输出电平

还有一点,LED的一端接VCC,高电平;想要使LED点亮,则必须要有电流,也就是压差,也就是其实写0才是点亮

网上找的远离提,可能有点问题,不要全信!


首先可以不对位操作

P1=0

P1++

就可以而且不用担心溢出的问题

溢出又会变成0

试著去掉a这个临时变数

懂我意思不咯。


main函数放在最后试试


啊……

看来你还没有理解单片机编程的本质

对於单独一个LED 控制的是「位」 是Bit 这是计算机最小的单位

比如你用的51 是8位的 所以一个char应该有8个bit 你现在让一个char自增然后控制LED或者说引脚 你觉得可能吗?

顺著这个思路回去改程序吧 提醒一下 sbit这个关键字


没有用过你这个单片机 但网上查到的「51单片机」资料都说的是LED是P0控制的而不是P1。 看看电路图是不是用错变数了?


a给个初值试试吧

没啥问题看著

至于是不是非要用sbit关键字

直接给P1整个口赋值也无不可啊

俺觉得没毛病


-a什么鬼?a是多少?


a有问题没有赋初值


推荐阅读:
相关文章