看板 ASM 關於我們 聯絡資訊
我發現使用在c30的c compilier上__delay_us()函式時 輸入是const像 __delay_us(20)就正常 換成變數像 delay=20; __delay_us(delay) 延遲時間就會爆增 不知道為什麼 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.141.134.219
ksmrt0123:用變數需要run time才會算出真正的delay數值, 細節看一 08/19 01:30
ksmrt0123:下 libpic30.h 就知道 08/19 01:31
qeagle:謝謝你的回應,但我看它的說明只有提到定義FCY這個值會影響 08/21 14:38
qeagle:時間FCY是外部振盪器頻率,並沒看到用常數與變數有差別? 08/21 14:39
qeagle:我自己懷疑是否巨集造成,但也看不出來 08/21 14:55
ksmrt0123:那你要看一下compiler optimization的 constant 08/22 00:15
ksmrt0123:folding 與 constant propagation 08/22 00:15
ksmrt0123:你用的compiler可能沒有做constant propagation, 或是 08/22 00:18
ksmrt0123:條件不足所以沒做propagation 08/22 00:21
qeagle:哇..這個就太深了,這個專有名詞我都沒看過,但我想程式有沒 08/22 19:07
qeagle:有做佳化..應該不會讓原預期是us的delay功能,變成ms等級吧 08/22 19:08
ksmrt0123:那就... 直接看編出來的asm檔的差異吧 08/23 01:34