菜鸟求助:请教关于c51 的位操作问题

[复制链接]
3102|8
 楼主| epdcty 发表于 2008-5-29 21:29 | 显示全部楼层 |阅读模式
小弟初学单片机,想做个程序,以计数器的形式(0-15)体现在p1口上,在proteus中用数码管显示,但是按照自己写的代码在keilc中观察p1都不对,更别说显示了.
麻烦高人指点一下.还有就是位访问,不知道我这样写对不对?
#include <AT89X51.h> 
void main(void) 
{ unsigned int a;
  int pp=0;

do
 { for(a=0; a<50000; a++);  //一次循环
     P1_0=pp^0;
     P1_1=pp^1;
     P1_2=pp^2;
     P1_3=pp^3; 
 }while(pp++<16);
 }
soso 发表于 2008-5-29 21:37 | 显示全部楼层

这是想干啥?

pp^0 可并不是取 pp 的第零位,而是 pp 和 0 做异或

pp^1, pp^2, pp^3 也都是如此

main 中应该有个无限 loop
 楼主| epdcty 发表于 2008-5-29 21:43 | 显示全部楼层

那请问怎么访问pp的第0

computer00 发表于 2008-5-29 21:56 | 显示全部楼层

用位与操作。&1就是取最低位,&2就是取次低位...

 楼主| epdcty 发表于 2008-5-29 22:02 | 显示全部楼层

谢谢computer00

对了,忘记这种法子了
非常感谢computer00 
HELLO_LEI 发表于 2008-5-29 22:13 | 显示全部楼层

idata pp;

idata pp;
可位寻址字节定义
wxj1952 发表于 2008-5-30 10:31 | 显示全部楼层

LS?

bdata  char  pp;
ayb_ice 发表于 2008-5-30 11:00 | 显示全部楼层

果然是菜鸟

liwentao0 发表于 2008-5-30 17:50 | 显示全部楼层

单片机

  大哥真行,程序能写成这样.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部