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