论坛风格切换切换到宽版
  • 3140阅读
  • 2回复

求助个C51的移位问题 [复制链接]

上一主题 下一主题
离线永远的FM
 
发帖
12110
只看楼主 倒序阅读 0楼 发表于: 2008-11-21
现在做个c51的控制串行pll芯片的程序。
现在在函数中定义了个int的能位寻址的16位变量,把端口p2.0定义为这个变量第15位。然后将这个位寻址16位变量赋值0xffff,把它左移一次就发送一次第15位,一共左移16次。结果在左移8次以前,p2.0一直都是1,正常;左移8~16次时(和前面连在一起移动的),p2.0一直是0,(应该是1才对)。请问这是怎么回事?难道左移的位寻址变量只能是8位吗?
离线BG3DZY
发帖
84
只看该作者 1楼 发表于: 2008-11-21
是c51移位问题,你应该将低8位单独移出。
因为移位寄存器只有8位,编译系统保留了16位中的高8位,舍弃了低8位。
离线永远的FM
发帖
12110
只看该作者 2楼 发表于: 2008-11-23
确实是这样的。
我现在把程序稍微改变一下,可以进行16位以下任意位数的移出。