PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
ASM
Re: [问题] 基本语法问题
楼主:
maxpower
(先)
2014-12-30 00:36:44
刚才举的例子
while ( !( UCSR0A & (1<<UDRE0)) );
目的只是检查UCSR0A 第n个Bit是否等于1
假设UDRE0 = 5
1<<UDRE0的意思就是0x01左移5次(0b00100000)
写成下面这样也是可以的
while ( !( UCSR0A & 0x20) );
只是习惯罢了
作者:
papaya125
(都你说就好了)
2014-12-30 08:12:00
很感谢您的解答!!!!!再请教一下,若改成 2<<UDRE0是否就是 0x02开始左移呢??
楼主:
maxpower
(先)
2014-12-30 13:06:00
是阿,我自己对这种写法有点反感,但人家都建好了,那就拿来用吧,不用太纠结知道他在写什么就好
作者:
papaya125
(都你说就好了)
2014-12-30 13:49:00
非常感谢再请教一个问题 当我知道 UCSR0A & (1<<UDRE0)就是指 UCSR0A的某位元 那While(!(UCSR0A某bit))!要如何判断 原先是1或是0呢?? 不好意思 初学者Q__QUDRE0 初值为1所以 他是直接判断该位初始值,然后若初始值变动 就执行请问这样说法对吗?
楼主:
maxpower
(先)
2014-12-30 20:34:00
要如何判断1或0,请先去查一下AND的真值表和0做AND运算,出来的结果一定等于0只有1 AND 1 结果才会等于1假如UCSR0A = 0xAA ( 0b10101010 )UCSR0A & 0x20 = 0x20 ( 0b00100000 )假如UCSR0A = 0x55 ( 0b01010101 )UCSR0A & 0x20 = 0 ( 0b00000000 )
作者:
papaya125
(都你说就好了)
2014-12-31 13:53:00
m大我还是不太懂耶!!!意思就是主要是看datasheet然后找UCSR0A的初值来看吗?UCSR0A的初值是 0b00100000又 UDRE0是 bit5 所以他就会知道 UCSR0A&(1<<UDRE0)为1应该是这样哦!!!感谢m大让我拨云见日阿!!!
继续阅读
[问题] 基本语法问题
papaya125
[问题] 免费训练课程?
zj4gjcl6
[请益] 挑kit?
yobook
[问题] AVR XMEGA一些问题
papaya125
[问题] Arduino使用size读SD卡内的文字档大小
icejos
[问题] 想问WiFi BT module 在NB和手机
tseng1991
[问题] 寻址使用方法
andy79323
[问题] MIPS 矩阵计算
h04mp6286
[问题] 组合语言转成机器语言
cozychocolat
[问题] arduino 配3DR做无线传输
WarmBed
Links
booklink
Contact Us: admin [ a t ] ucptt.com