whmjack
驱动小牛
驱动小牛
  • 注册日期2003-09-17
  • 最后登录2007-04-26
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望29点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:870回复:3

这个表达式怎么看结果?

楼主#
更多 发布于:2004-02-25 08:56
请教各位大侠,这个式子怎么看结果?是D12smart_board里的
void check_key_LED(void)
{
    static unsigned char c, last_key = 0xf;

    c = MCU_SWM0 & MCU_SWM1;
    c &= 0x0f;
。。。。
其中    sbit MCU_SWM0     = P1^0;
    sbit MCU_SWM1     = P1^1;
我想知道,unsigned char 与sbit之间是怎么运算的?
谢谢

yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-02-25 09:44
c &= 0x0f;
就是
c =c & 0x0f;
与运算
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
whmjack
驱动小牛
驱动小牛
  • 注册日期2003-09-17
  • 最后登录2007-04-26
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望29点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-25 09:43
但我在程序中加入printf("the c is %x",c)竟然从串口得到了100,当P00,P01为1时,用语句printf("the c is %d",c)得到了256,在同样的情况下!不知道是什么问题?
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-25 09:23
请教各位大侠,这个式子怎么看结果?是D12smart_board里的
void check_key_LED(void)
{
    static unsigned char c, last_key = 0xf;

    c = MCU_SWM0 & MCU_SWM1;
    c &= 0x0f;
。。。。
其中    sbit MCU_SWM0     = P1^0;
    sbit MCU_SWM1     = P1^1;
我想知道,unsigned char 与sbit之间是怎么运算的?
谢谢

 


若P1.0和P1.1均为高电平,则C=1,否则C=0;
C为unsigned char 类型,共有8bit D[7-0],
根据c = MCU_SWM0 & MCU_SWM1,即
     D0=MCU_SWM0 & MCU_SWM1;
     D[7-1]=0;
实际上c &= 0x0f;一句没什么作用。
www.dragon-2008.com 欢迎交流
游客

返回顶部