作者CCT63 (CCT)
看板ASM
標題[問題] KeilC C、ASM混合 & Delay函式
時間Tue Apr 21 23:51:06 2015
最近要完成一些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://webptt.com/m.aspx?n=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
1F:推 cwl751005: 把compile的錯誤代碼貼出來可能比較好解 04/22 17:18
2F:推 hengchieh: microchip 開發平台 可以用軟體模擬算出時間 04/23 12:29
3F:→ hengchieh: Keil c 我有找過,沒看到這項功能,目前是用硬體, 04/23 12:29
4F:→ 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
5F:推 smtmike: "$" compiler 可能看不懂這個用法 04/25 15:17
6F:→ smtmike: 可以站內信多交流 04/25 15:18
7F:推 gothatet: 先把變數定義在 DIRECT access得到的位置 04/29 01:45
8F:→ gothatet: R0 or 040h 這類吧 你這樣寫我不知道他會不會認成XDATA 04/29 01:46
9F:→ MaxHaru: 你可能是要用#pragma asm/#pragma endasm 09/05 12:47