作者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/cn.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