查看: 6664|回复: 14

[提问] 请教如何用C51实现2位循环

[复制链接]
发表于 2010-2-2 10:44:11 | 显示全部楼层 |阅读模式
关键词: 请教
意思是这样,我想得到一个两bit循环:01,10,01.....。请教各位老师入户用c51实现:
发表于 2010-2-2 16:10:58 | 显示全部楼层
怎么没人解答?太简单了还是太难了?
发表于 2010-2-3 18:53:38 | 显示全部楼层
用if-else就可以了。switch都可以。不知道你要干什么?
发表于 2010-2-3 20:26:17 | 显示全部楼层
if(P0=0)
   P0=0x01;
else
   P0=0;
lz,这样可否?
发表于 2010-2-3 21:07:02 | 显示全部楼层
什么用途介绍一下,是用来产生方波?
发表于 2010-2-3 22:51:50 | 显示全部楼层
a = 1;
while(1)
{
       a ^= 0x03;
}

评分

参与人数 1积分 +2 收起 理由
原野之狼 + 2

查看全部评分

发表于 2010-2-4 08:43:06 | 显示全部楼层
ls的方法很简练,建议采用
发表于 2010-2-4 08:43:21 | 显示全部楼层
ls的方法很简练,建议采用
发表于 2010-2-4 09:05:44 | 显示全部楼层
呵呵,毛片果然是软件老鸟,思路独特。
发表于 2010-2-4 15:00:11 | 显示全部楼层
假如 要移位的 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 [00]           B=0x54
  B|=A;    //  整合起来;  0x010101 [01]           B=B|A   0x54|0x01 =0x55;
  TEMP=B;  //  回写  TEMP=0x55;
}
发表于 2010-2-4 15:52:41 | 显示全部楼层
对于取反,‘毛片’写的已是最简的了。
俺咋一看标题,还以为楼主想做胃反转。
 楼主| 发表于 2010-2-5 08:45:12 | 显示全部楼层
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、状态?
发表于 2010-2-23 22:30:44 | 显示全部楼层
#define WIDTH  8
#define BITSIZE  3

char B;

TEMP=0x55;  
while(1)
{      
   B=TEMP;  
  TEMP=  (B<>(WIDTH -BITSIZE  ))
}
发表于 2010-6-28 17:49:54 | 显示全部楼层
O,原来简单问题可以得到这么多大师的指点.
发表于 2011-3-26 16:19:47 | 显示全部楼层
高手啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表