iar软件中用c语言编写电容程序,IAR 的精确延时程序
C语言中,想使用精确的延时程序并不容易。IAR 中有这样的一个函数
__delay_cycles(),该函数在头文件intrinsics.h中定义,函数的作用就是延时N个指令周期。根据这个函数就可以实现精确的延时函数了(但不能做到100%精确度)。
实现的方法:
建立一个delay.h的头文件:
#ifndef __IAR_DELAY_H
#define __IAR_DELAY_H
#include
#define XTAL 8 //可定义为你所用的晶振频率(单位Mhz)
#define delay_us(x) __delay_cycles (
(unsigned long)(x * XTAL) ) #define delay_ms(x) __delay_cycles (
(unsigned long)(x * XTAL*1000) )
#define delay_s(x) __delay_cycles ( (unsigned long)(x * XTAL*1000000) )
#endif
注意: __delay_cycles(x),x必须是常量或则是常量表达式,如果是变量则编译报错!
验证方法:
1.设置IAR编译器,设置如下:
Ctrl+D进入软件仿真后,在主菜单View->Proifing,即可调出分析函数的运行时间。
按下图中红圈子的Activate按钮
,同时也把最右边的“Auto
Refresh"打开,在F5运行一段时间后,按Debug->Break中断程序的执行,即可列出所有函数的Cycles。
2.编写测试函数
空函数
void delay()
{ }
发现这个空函数所用到的指令周期为 4 ,本人用的是IAR AVR 5.20来测试
分别尝试不用的测试值,测试us ,ms
,s级的延时,然后把delay()运行的指令周期减去4就是delay_us(),delay_ms(),delay_s()所执行的指令周期
void delay()
{ delay_us(100);
//delay_ms(100);
// delay_s(100);
}
测试发现,精确度比较高,误差在1us以下。
有了这个方法,以后就不用在改变晶振的情况下去调延时程序了!
iar软件中用c语言编写电容程序,IAR 的精确延时程序相关推荐
- c语言图书管理系统用什么软件,编写c语言的软件 纯C语言编写图书管理系统.doc...
编写c语言的软件 纯C语言编写图书管理系统 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统WORD文档bbszp& ...
- c语言之bbs管理系统,编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp.doc...
编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统W ...
- linux中用c语言编写一个经纬度转换大地坐标
在Linux中用C语言编写一个经纬度转换大地坐标的程序,需要用到以下步骤: 包含相关的头文件,例如"math.h". 定义必要的常量和变量. 输入经纬度坐标. 将经纬度转换为弧度. ...
- PLC中用scl语言编写算法求解modbus crc校验码
PLC中用scl语言编写算法求解modbus crc校验码 因为不是严格的modbus协议,是用的自由口通讯,传输数据里面得加上CRC校验,所以得搞个算法根据发送不同的数据生成相应的CRC校验码. 现 ...
- 用C语言编写一个Linux下的简单shell程序
这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...
- 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具
在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH 04H;2个 ...
- 用c语言设计通讯录软件下载,C语言编写的通讯录.doc
C语言编写的通讯录.doc 1目 录一. 训练项目 2二. 训练目的 2三. 设计分析 2四. 设计方案 2五.实训 详细设计 3六. 使用说明 4七. 运行调试 4八. 训练心得 4九. 参考文献 ...
- IAR 的精确延时程序(转)
C语言中,想使用精确的延时程序并不容易.IAR 中有这样的一个函数 __delay_cycles(),该函数在头文件intrinsics.h中定义,函数的作用就是延时N个指令周期.根据这个函数就可以实 ...
- ubuntu系统中用c语言编写简单程序
目录 (一):修改参数提高下载速度 (二):c语言入门编写helloworld (三):在ubuntu系统下编写简单程序 (四):在windows系统下编写简单程序 (五):在ubuntu系统下使用m ...
最新文章
- python中choicebox_学习python的第四天笔记
- 1003个微生物基因组数据发布
- 解码resources时里面是空的_深度解码超实用的OpenStack Heat
- 牛人学习h264运动估计的方法
- python 字符串函数总结
- 以图换字的几种方法及优劣分析
- 【采访】腾讯社交广告高校算法大赛决赛第二周最大进步队伍——拔萝卜比赛经验及心得分享
- Android Studio安装、配置教程全 - 安卓开发环境的配置手册
- 利用Matlab求解函数导数并绘图
- python cv2图片剪裁
- idea 修改工作空间
- 简述使用configurations.all统一androidx的版本
- 异构应用异构数据库用魔方智能中间件FIX平台转化
- UI设计初学者必入门必看!
- teamviewer检测为商业用途 5分钟后关闭解决方法
- 微信小程序云开发之云数据库查询及动态输入
- android 删除wifi文件,删除无线网络连接信号(wifi)(图文教程)
- 简单理解 tr069协议
- jmeter JSR223 PostProcessor 操作
- CUDA与cuDNN安装教程(超详细)
热门文章
- 物联网定位模块对智慧交通的意义
- 人脸区域马赛克,圆形(心形)模糊Mask
- Python元编程:控制你想控制的一切
- 运动学习与控制 学习的迁移
- Python调用周立功CAN接口卡接口库函数
- 77种网络经济创新模式
- 【STM32】STM32的时钟系统
- sdutacm-悼念512汶川大地震遇难同胞
- C# 开发微信公众号现金红包发送,解决IP地址非你在商户平台设置的可用IP地址和”未能创建 SSL/TLS 安全通道“ 问题
- Deeply supervised salient object detection with short connections 论文复现