[問題] KeilC C、ASM混合 & Delay函式

看板ASM (組合語言)作者 (CCT)時間10年前 (2015/04/21 23:51), 10年前編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/1
最近要完成一些function 裡頭需要使用到一些delay的時間 老闆的意思是時間大概就可以了 不需要到很準 但是我想藉此機會稍微了解一些KeilC ASM的用法 我的程式大概是這樣 (假設system CLK=12MHz) -- void delay_2us(void) { unsigned short uiTemp; __asm { mov uiTemp,#10 //假設繞10次2u DJNZ uiTemp,$ } } int main(void) { . . . delay_2us() . . . } -- 兩個函式需要放在同一個*.C檔中 之前的寫法是用C的loop去寫 但是時間是用量的... 想請問一下 如果我想用ASM來寫(可以來算週期來預估時間) 要怎麼寫? BTW 我有google了一些code 不知道為什麼我compile都會錯= = 因為參考的code不在身邊 所以這邊沒辦法貼出來請教大家 謝謝 -- http://www.keil.com/support/docs/1671.htm 一定得extern出來嗎? http://infocenter.arm.com/help/topic/com.arm.doc.dui0056d/DUI0056.pdf 朝CHAP4 這邊下手嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.237.71 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1429631469.A.892.html ※ 編輯: CCT63 (1.163.237.71), 04/21/2015 23:56:10 ※ 編輯: CCT63 (1.163.237.71), 04/22/2015 00:07:48

04/22 17:18, , 1F
把compile的錯誤代碼貼出來可能比較好解
04/22 17:18, 1F

04/23 12:29, , 2F
microchip 開發平台 可以用軟體模擬算出時間
04/23 12:29, 2F

04/23 12:29, , 3F
Keil c 我有找過,沒看到這項功能,目前是用硬體,
04/23 12:29, 3F

04/23 12:30, , 4F
搭配 debug mode跟timer 去算出每層for迴圈的時間
04/23 12:30, 4F
黃色那行就是我參考網路上的寫法 mov 那邊會正確 可是DJNZ那邊會被compiler說unrecognized instruction h大說的方法 用timer對我現在的狀況比較不適合 因為不太可能為了數時間再佔一個IP ※ 編輯: CCT63 (1.163.239.78), 04/24/2015 00:29:24 ※ 編輯: CCT63 (1.163.239.78), 04/24/2015 00:29:50

04/25 15:17, , 5F
"$" compiler 可能看不懂這個用法
04/25 15:17, 5F

04/25 15:18, , 6F
可以站內信多交流
04/25 15:18, 6F

04/29 01:45, , 7F
先把變數定義在 DIRECT access得到的位置
04/29 01:45, 7F

04/29 01:46, , 8F
R0 or 040h 這類吧 你這樣寫我不知道他會不會認成XDATA
04/29 01:46, 8F

09/05 12:47, , 9F
你可能是要用#pragma asm/#pragma endasm
09/05 12:47, 9F
文章代碼(AID): #1LDd7jYI (ASM)
文章代碼(AID): #1LDd7jYI (ASM)