LED流水灯程序,但我看不懂其中说的,能不能来个小白版的讲解,并指导下小白我
--------------------------------------------------------------------------------#include <reg52.h>
#include <intrins.h>
void Delay10ms(unsigned int c);
main()
{
unsigned char LED;
LED = 0xfe;
while (1)
{
P0 = LED;
Delay10ms(50);
LED = LED << 1; if (P0 == 0x00)
{
LED = 0xfe; // 0xfe = 1111 1110
}
}
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
程序确定没敲错?亮7个灯到灯全灭,再重亮7个灯? rencaixiaomeng 发表于 2018-11-30 20:13
程序确定没敲错?亮7个灯到灯全灭,再重亮7个灯?
是我看不懂其中的一个依次后退那个 就是 LED=LED<<1 <<左移运算符,LED<<1就是把LED向左移1位,右边填0,LED一开始是FE,二进制是1111 1110,左移一位,右边填0就是 1 111 11100,因为LED只能存8元,最高位舍弃掉,就是111 11100 点道为止 发表于 2018-11-30 20:23
是我看不懂其中的一个依次后退那个 就是 LED=LED
比如 0Xfe 就是1111 1110 LED=LED << 1; 执行之后也就是左移一位 就是1111 1100 左移完由于只有8位数据,所以最高位截断,最低位补0 。也就是0xfc。 lkp1115 发表于 2018-11-30 20:34
比如 0Xfe 就是1111 1110 LED=LED
谢谢大佬指点 谢谢
页:
[1]