请教如何用C51实现2位循环

2010年02月02日 10:44    发布者:ydz0515
意思是这样,我想得到一个两bit循环:01,10,01.....。请教各位老师入户用c51实现:

网友评论

老郭 2010年02月02日
怎么没人解答?太简单了还是太难了?
忘情天书 2010年02月03日
用if-else就可以了。switch都可以。不知道你要干什么?
f.luo 2010年02月03日
if(P0=0)
   P0=0x01;
else
   P0=0;
lz,这样可否?
terrysun 2010年02月03日
什么用途介绍一下,是用来产生方波?
McuPlayer 2010年02月03日
a = 1;
while(1)
{
       a ^= 0x03;
}
kbgyzp 2010年02月04日
ls的方法很简练,建议采用
kbgyzp 2010年02月04日
ls的方法很简练,建议采用
忘情天书 2010年02月04日
呵呵,毛片果然是软件老鸟,思路独特。
Netjob 2010年02月04日
假如 要移位的 8位宽的 TEMP ;

char A,B;
TEMP=0x55;  // 0x01010101
while(1)
{
  A=TEMP;  //  A=0x55
  B=TEMP;  //  B=0x55;
  A>>=6;   //  高2位  循环到低2位  0x000000[ 01 ]  A=0x01
  B<<=2;   //  左移 两位   0x010101            B=0x54
  B|=A;    //  整合起来;  0x010101            B=B|A   0x54|0x01 =0x55;
  TEMP=B;  //  回写  TEMP=0x55;
}
宇宙飞船 2010年02月04日
对于取反,‘毛片’写的已是最简的了。
俺咋一看标题,还以为楼主想做胃反转。
ydz0515 2010年02月05日
6楼 McuPlayer 高明,已经采纳到程序中。感谢。

        例如系统有2个状态A、B:A状态01转换到B状态10或反之,像一个钟摆:那么用McuPlayer的方法就是:
       switch(current_state^3);  // 很巧妙。正规。


3状态转换我还是想不出来:001,010,100,001,010,100,001......

或者01,10,11,01,10,11,01,........

4、5、6、状态?
Netjob 2010年02月23日
#define WIDTH  8
#define BITSIZE  3

char B;

TEMP=0x55;  
while(1)
{      
   B=TEMP;  
  TEMP=  (B<>(WIDTH -BITSIZE  ))
}
alpha321 2010年06月28日
O,原来简单问题可以得到这么多大师的指点.
孤独小行星 2011年03月26日
高手啊!