搜索
bottom↓
回复: 3

关于延时的问题

[复制链接]

出0入0汤圆

发表于 2007-4-25 10:41:47 | 显示全部楼层 |阅读模式
马老师,您上边贴的教材第六章第15页的那个delay()是怎么来的,怎么比较精确的用for或者while循环延时,在#include <delay.h>的延时函数_delay_ms()是基于多大晶阵的,不同晶振下怎么使用,谢谢马老师

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2007-4-25 14:28:46 | 显示全部楼层
1.delay()函数是CVAVR扩展的函数。

2.不提倡使用软件延时。第6章由于还没介绍中断与T/C,所以先使用了软件延时。

3.用高级语言设计精确的软件延时比较困难,要通过反汇编查看,或通过模拟仿真凑一下。使用汇编会好一点,因为可以通过计算指令周期来得到。但不管如何,软件延时都不能讲非常精确,你再算的精确,但你无法考虑被中断打断将怎样。所以比较精确的长时延时采用T/C为好。软件延时主要使用在需要延时几个或十几个指令周期的地方,如使用NOP语句等。

4.以下是CVAVR中对delay()函数使用的说明;

These functions are intended for generating delays in C programs.

The prototypes for these functions are placed in the file delay.h, located in the ..\INC subdirectory. This file must be #include -ed before using the functions.

Before calling the functions the interrupts must be disabled, otherwise the delays will be much longer then expected.

Also it is very important to specify the correct AVR chip clock frequency in the Project|Configure|C Compiler|Code Generation menu.



The functions are:



void delay_us(unsigned int n)





generates a delay of n mseconds. n must be a constant expression.



void delay_ms(unsigned int n)



generates a delay of n milliseconds.

This function automatically resets the watchdog timer every 1ms by generating the wdr instruction.



Example:



void main(void) {

/* disable interrupts */

#asm("cli")



/* 100ms delay */

delay_us(100);



/* ............. */



/* 10ms delay */

delay_ms(10);



/* enable interrupts */

#asm("sei")



/* ............. */

}



注意这句:Also it is very important to specify the correct AVR chip clock frequency in the Project|Configure|C Compiler|Code Generation menu.



你只要按说明在编译环境中正确的指定系统时钟的频率,即与你实际硬件环境使用的一样,采用该函数就能得到正确的延时,如果不被中断打断的话,其精度可以满足一般的使用了。

出0入0汤圆

 楼主| 发表于 2007-4-25 15:20:18 | 显示全部楼层
非常感谢马老师能抽出时间给我讲这么多,还有个问题,GCC中延时函数_delay_ms()怎么用,比如_delay_ms(40)就是延时40ms吗(1MHz晶振),还是要40/4=10ms

出0入0汤圆

发表于 2007-4-25 15:37:22 | 显示全部楼层
我没用过GCC。这些函数都是扩展的函数,在该软件平台的HELP中应该对其有使用的说明。



delay的使用应该同CVAVR类似的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 17:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表