- 17
- 0
- 约1.84千字
- 约 6页
- 2016-12-29 发布于重庆
- 举报
和软件延时时间长短有关的因素有,单片机,晶振,延时语句,此处以for循环语句为例。
首先,我们编写一个for循环的延时语句,如下:非关键代码省略,点击查看全部代码。
void delay(unsigned char n)
{
for(;n!=0;n--)
;
}
void main(void)
{
init_devices();
delay(254);/*计算结果,本条语句延时约138微秒,avr studio仿真结果延时141微妙,以仿真的为准。*/
while(1)
;
}
正常编译,按照常规方法打开JTAG下载并进入调试。我们要想办法获取程序的运行指令个数。
按下图操作调出汇编程序框:
打开watch窗口,找到delay(254);,使用常规调试方法F10,F11,使当前光标指向delay(254);的下一行,如下图:
使用F11逐条语句执行,你会看到如下图的运行规律,按照1234567的方向运动,最后循环,这就是我们想要找的执行语句条数,同时注意观察watch窗口的数值变化。通过更改watch窗口的数值,使循环结构快速结束。
我们由此得到语句的条数是3+3*(n+1),这里是3+254*(3+1)=1020条。在普通的计算中,我们可以这样认为,for循环的语句数量是n*4+4。
AVR多数指令的执行时间是晶振频率分之一,也就是一个时钟周期,部分指令的时钟周期是2-4个时钟周期,详细内容请查看数据手册。那么delay(254);的总运行时间1020个时钟周期,即为1020/(7.3728×1000000)秒,约和1020/7.3728 =138微秒。在要求不高的延时中,就可以使用for循环来多次调用这个delay作为100微秒使用,而不用考虑外层for循环造成的时钟周期延时。
结语:这里只是给出了一个软件延时的简单例子,并不具有很强的使用性,实际操作中可以定义delay100us,delay1ms,delay1s等函数直接使用。
/***************************************************************************
延时 M32 7.3728M 粗略计算
*/
void Delay100us(uint8 x)
{
uint8 i; //4clock
for(i=147;x!=0;x--)
while(--i); //5 * i clock
}
void Delay1ms(uint16 n)
{
for (;n!=0;n--){
Delay100us(10);
}
}
void Delay1s(uint16 m) // m = 6 ,when m==7, it is 1.
{
m=m*40;
for (;m!=0;m--){
Delay100us(250);
}
}
/***************************************************************************/
软件准确仿真延时时间
使用AVRstudio软件仿真可以看到准确的程序运行的时间,设置中断的方式就可以了解到。
调入AVR Studio,为观察延时时间,点击左侧Workspace中的Processer,注意看其中的几个参数:Cycle Counter和Stop Watch,前一个是执行周期数,即从复位开始到目前为止共执行了多少个周期,而Stop Watch则表示从复位开始到目前为止共用去的时间数,如果Frenance中的频率值正确,那么这个时间就是正确的。这样,我们可以通过观察这个时间来调循环次数,将时间基本精确地调整到延时1ms。
在运行到第一个中断的时候stop watch的值是6.68,当运行到第二个中断的时候,stop watch的值为148.11,可以得到delay(254)这条语句的执行时间约为148.11—6.86=141.25us。我们看到软件仿真的时钟周期是1028个,与上面计算的1020个有一定差距,因为上面的计算我们忽略了调用程序所花的时间。
由于笔者技术有限,错漏之处在所难免,还望高手指点,以期我们更正。
您可能关注的文档
- AUTOCAD参数查询及绘图技巧EXCEL辅助篇.doc
- AutoCAD命令与系统默认快捷键大全.doc
- AUTOCAD上机指导.doc
- AutoCAD工程师考试大纲.doc
- AutoCAD安装步骤.docx
- AUTOCAD布局插入图框.doc
- AutoCAD应用技巧44例郑州清新供稿.doc
- AUTOCAD快捷键全集hao.doc
- AutoCAD操作实例进水闸.docx
- AutoCAD新老技巧.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)