2783|4

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问这段程序是什么意思? [复制链接]

  US_CR   = (1 <<  2) |           /* RSTRX: Reset Receiver: 1 = The receiver logic is reset. */
            (1 <<  3);          /* RSTTX: Reset Transmitter: 1 = The transmitter logic is reset. */
  US_CR   = (0 <<  2) |         /* RSTRX: Reset Receiver: 1 = The receiver logic is reset. */
            (0 <<  3) |         /* RSTTX: Reset Transmitter: 1 = The transmitter logic is reset.*/
            (1 <<  4) |        /* RXEN: Receiver Enable: 1 = The receiver is enabled if RXDIS is 0. */
            (0 <<  5) |        /* RXDIS: Receiver Disable: 0 = Noeffect. */
            (1 <<  6) |  /* TXEN: Transmitter Enable: 1 = The transmitter is enabled if TXDIS is 0. */
            (0 <<  7) | /* TXDIS: Transmitter Disable: 0 = Noeffect. */
            (1 <<  8) | /* RSTSTA: Reset Status Bits: 1 = Resets the status bits PARE, FRAME, OVRE and RXBRK in the US_CSR. */
            (0 <<  9) |             /* STTBRK: Start Break: 0 = Noeffect. */
            (0 << 10) |             /* STPBRK: Stop Break: 0 = Noeffect. */
            (0 << 11) |             /* STTTO: Start Time-out: 0 = Noeffect. */
            (0 << 12);  
这段程序是什么意思?
如果US_CR的初值是:0x00801A1A,执行完这段程序后,US_CR的值是多少?是怎么得来的?请解答一下好吗,谢谢了!

最新回复

是位运算。。  详情 回复 发表于 2008-7-25 20:32
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1<<2可以看作 SETB(US_CR^bit2),

初值对结果没有影响,结果是0x150。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
US_CR  = (1 < <  2) ?          /* RSTRX: Reset Receiver: 1 = The receiver logic is reset. */
            (1 < <  3);          /* RSTTX: Reset Transmitter: 1 = The transmitter logic is reset. */
  US_CR  = (0 < <  2) ?        /* RSTRX: Reset Receiver: 1 = The receiver logic is reset. */
            (0 < <  3) ?        /* RSTTX: Reset Transmitter: 1 = The transmitter logic is reset.*/
            (1 < <  4) ?        /* RXEN: Receiver Enable: 1 = The receiver is enabled if RXDIS is 0. */
            (0 < <  5) ?        /* RXDIS: Receiver Disable: 0 = Noeffect. */
            (1 < <  6) ?  /* TXEN: Transmitter Enable: 1 = The transmitter is enabled if TXDIS is 0. */
            (0 < <  7) ? /* TXDIS: Transmitter Disable: 0 = Noeffect. */
            (1 < <  8) ? /* RSTSTA: Reset Status Bits: 1 = Resets the status bits PARE, FRAME, OVRE and RXBRK in the US_CSR. */
            (0 < <  9) ?            /* STTBRK: Start Break: 0 = Noeffect. */
            (0 < < 10) ?            /* STPBRK: Stop Break: 0 = Noeffect. */
            (0 < < 11) ?            /* STTTO: Start Time-out: 0 = Noeffect. */
            (0 < < 12);

这是在嵌入式中非常通用常见的赋值方式,用的是C特有的“移位”操作,每一个移位其实就是将该位置1(1< 第一步 US_CR = 0x000C;/*0b0000_0000_0000_1100 第2位,第3位为1,其他为0*/
第二步 US_CR = 0x0150; /*0b0000_0001_0101_0000 第4、6、8是1,其他是0*/
最终结果,如果不考虑硬件对其中状态位的改动,结果就是0x0150.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
哦,我明白了,谢谢楼上两位!!!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
是位运算。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表