Я использую встроенный C на Keil. Я пытаюсь запрограммировать так, что он хранит бит, сдвигает бит, а затем сохраняет его снова, и он повторяется до тех пор, пока не будут сохранены все восемь бит.Почему мой бит не сдвинулся с места?
Однако, когда я отлаживаю (возможно, неправильно отлаживает), значение показывает только «01 00 00 00 00 00 00 ...». Когда он хранит логику «1», а затем, когда он сдвигается влево, он показывает «02 00 00 00 00 00 00 ...». Когда цикл повторяется, он показывает одно и то же снова и снова. Я ожидал, что «01 01 01 01 01 01 01 ...» (скажем, все входные биты были «1»). Как решить эту проблему?
#include <reg51.h>
sbit Tsignal = P1^2;
unsigned char xdata x[500];
for(u=0; u<8; u++)
{
x[i] = x[i] << 1;
x[i] = Tsignal; //Store Tsignal in x
}
А, я уже решил.
unsigned int u;
unsigned char p;
unsigned char xdata x[500];
for(u=0; u<8; u++) //Bit Shift Loop
{
x[i] = x[i] <<1; //Left Bit Shift by 1
p = Tsignal; //Store Tsignal to Buffer p
x[i] |= p;
} //End Bitshift loop
В стандартном C нет прямой поддержки bitarrays. Вы используете что-то конкретное для Keil - можете ли вы включить определение x? – DaveR
Как объявляется 'x'? – sarnold
Почему вы сразу переписываете значение, созданное с помощью 'Tsignal'? – sarnold