Я начал изучать встроенную систему, и меня попросили написать простую программу для подсветки 8 светодиодов в порту, сначала все должны быть равны одному, а затем загораться один за другим в последовательности от 7 до0.
Я написал следующий код, но не могу точно определить, почему цикл запускается только один раз?
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
#define BYTE_TO_BINARY(byte) \
(byte & 0x80 ? '1' : '0'), \
(byte & 0x40 ? '1' : '0'), \
(byte & 0x20 ? '1' : '0'), \
(byte & 0x10 ? '1' : '0'), \
(byte & 0x08 ? '1' : '0'), \
(byte & 0x04 ? '1' : '0'), \
(byte & 0x02 ? '1' : '0'), \
(byte & 0x01 ? '1' : '0')
#include <stdio.h>
int main()
{
int i = 0;
int x = 0xFF;
while(x != 0x00)
{
x= x>>1;
printf("%x\n%d",x,i);
printf("\nBinVal "BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(~x));
x= x<<1;
i++;
return 0;
}
}
Я ожидал, что x будет непрерывно смещаться вправо, печатая смещенное значение.Но он просто сдвигается, как только x
переходит от 0xFF
к 0x7F
и все.Интернет-ресурсы мне не помогают. Буду благодарен, если кто-нибудь сможет мне помочь.