我在Keil上使用嵌入式C.我试图编写这样的程序,它存储一些位,然后再存储它,直到所有8位都被存储为止。为什么我的位没有左移?
但是,当我调试(也许调试错误)时,该值只显示“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