看板 ASM 關於我們 聯絡資訊
最近要完成一些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
cwl751005: 把compile的錯誤代碼貼出來可能比較好解 04/22 17:18
hengchieh: microchip 開發平台 可以用軟體模擬算出時間 04/23 12:29
hengchieh: Keil c 我有找過,沒看到這項功能,目前是用硬體, 04/23 12:29
hengchieh: 搭配 debug mode跟timer 去算出每層for迴圈的時間 04/23 12:30
黃色那行就是我參考網路上的寫法 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
smtmike: "$" compiler 可能看不懂這個用法 04/25 15:17
smtmike: 可以站內信多交流 04/25 15:18
gothatet: 先把變數定義在 DIRECT access得到的位置 04/29 01:45
gothatet: R0 or 040h 這類吧 你這樣寫我不知道他會不會認成XDATA 04/29 01:46
MaxHaru: 你可能是要用#pragma asm/#pragma endasm 09/05 12:47