datasheet

AVR C语句运行时间测试程序源代码

2016-10-08来源: eefocus关键字:AVR  C语句  运行时间
整个工程下载:
http://www.rayfile.com/zh-cn/files/b8f67659-d773-11df-b350-0015c55db73d/f0ec1fdf/
 
 
核心代码:
/********** AVR 运行时间测试程序 **********
* 版本.........: 1.0
* 作者.........: 陈利栋
* 目标.........: ATmega128
* 文件名.......: main.c
* 编译器.......: IAR for AVR V5.5
* 创建时间.....: 2010.10.14
* 最后修改.....: 2010.10.14
******************************************/
#include "main.h"

int putchar(int c)
{
    return uart_putchar(c);
}

volatile unsigned int TimerOverflowCount = 0;

int main(void)
{
    unsigned long TimerCount = 0;
    
    UART_Init();
    printf("*********** 运行时间测试 ***********\r\n");
    printf("Build: %s  %s\r\n", __DATE__, __TIME__);
    printf("时钟频率: %fMHz\r\n", (float)F_CPU / 1000000);

    TCCR1B_CS10 = 1;                           // 定时器1使能计数,无分频
    TIMSK_TOIE1 = 1;                           // 定时器1使能溢出中断
    __enable_interrupt();                      // 总中断使能
    TimerOverflowCount = 0;                    // 溢出计数清零
    TCNT1 = 0;                                 // 计数器清零


/* 此处插入要运行的代码 */
/* 代码开始 */
    _delay_us(123456);
/* 代码结束 */

    TCCR1B_CS10 = 0;                           // 定时器1停止计数  花费3个时钟周期
    TimerCount = TCNT1;
    TimerCount |= ((unsigned long)TimerOverflowCount << 16);
    TimerCount -= 3;                           // 关闭定时器的时间
    TimerCount -= (50 * TimerOverflowCount);   // 溢出中断花费的时间

    printf("消耗时钟周期数...: %ld  0x%lx\r\n", TimerCount, TimerCount);
    printf("消耗时间(单位: s): %lf\r\n", (double)1 * TimerCount / F_CPU);
    printf("消耗时间(单位:ms): %lf\r\n", (double)1000 * TimerCount / F_CPU);
    printf("消耗时间(单位:us): %lf\r\n", (double)1000000 * TimerCount / F_CPU);
    printf("消耗时间(单位:ns): %lf\r\n", (double)1000000000 * TimerCount / F_CPU);

    while (1);
}

#pragma vector = TIMER1_OVF_vect
__interrupt void Timer1_Overflow(void)
{
    TimerOverflowCount++;
}
 
 
测试效果:
AVR C语句运行时间测试程序源代码 - 耳朵 - 耳朵的博客
 

关键字:AVR  C语句  运行时间

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2016100830208.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AVR 单个DS18B20温度读取程序(可测负温度)
下一篇:AVR 串口收发 使用环形缓冲区实现的程序源代码

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR单片机——中断系统

中断的优点中断函数只在中断触发源触发的时候才会执行,其他时间不执行. 如果不使用中断而且如果要根据某个端口的变化而作相应的函数操作,就必须不断地查询端口的信号,而中断不用,只要端口一有变化,就会系统就会自动进入中断函数, 我觉得这就是中断的目的,也是优点.中断优先级1) AVR单片机在同一个优先级中,中断向量入口地址越低,其优先级越高。AVR单片机在响应中断以后,会禁止系统响应其余中断。如果程序需要在某个中断服务程序中响应其它中断事件,可以在该中断服务程序中用重新使能全局中断即可。否则,AVR单片机只有在退出中断进程时,才重新使能全局中断。2) AVR(至少是ATmega16)单片机采用固定的硬件优先级方式,不支持通过软件
发表于 2018-11-20
AVR单片机——中断系统

高手总结!AVR单片机学习笔记

下面是自己在学习AVR单片机时的学习经验,分享出来给大家,一起学习。1、  AVR单片机采用RISC架构,8051单片机采用CISC架构。前者速度为后者的2~4倍,为流水线操作指令2、  AVR单片机有32个通用寄存器(地址在RAM区从$0000开始到$001F),其中有6个(最后6个)合并为3个16位的X,Y,Z寄存器,用来存放地址指针,Z寄存器还可以寻址程序存储器3、  哈佛结构,131条机器指令4、  延迟开机功能5、  内部自带RC振荡器,可提供1/2/4/8MHZ的工作时钟6、 
发表于 2018-11-20

单片机抗干扰能力那家强?PIC、AVR....

单片机的抗干扰性能历来为大家所重视,现在市面上的单片机就我所接触过的,就有十家左右了,韩国的三星和现代;日本的三菱,日立,东芝,富士通,NEC;台湾的EMC,松汉,麦肯特,合泰;美国的摩托罗拉,国半的cop8系列,microchip系列,TI的msp430系列,AVR系列,51系列,欧洲意法半导体的ST系列。。。。。。这些单片机的抗干扰性能大多数鄙人亲自测试过,所用机器是上海三基出的两种高频脉冲干扰仪,一种是欧洲采用的标准,一种是日本采用的标准;日本的标准歉咂德龀辶⒊觯龀蹇矶却?0ns到250ns可调,欧洲采用的标准是脉冲间歇(间歇时间和发出时间可调)发出,脉宽也是从50ns到250ns可调;我们国家采用的是欧洲标准。一般
发表于 2018-11-20

AVR Mega8 V-USB general & multimedia keys via IR transmitor

(2)段)reportBuffer[1],0位USAGE (Volume Decrement);1位USAGE (Volume Increment);2位USAGE (Track Next);3位USAGE (Track Previous);4位USAGE (Play/Pause)reportBuffer[2] 没有用到。在report id为 2 报告发送函数:usbSetInterrupt((void *)&reportBuffer, 2); //因为只定义了两个字节的报告数据实验中IR处理用了AVR的ICP。需要注意的是,发送按键HID报告后,紧接着发送同类型的零数据HID报告
发表于 2018-10-17
AVR Mega8 V-USB general & multimedia keys via IR transmitor

AVR Mega16 PAL/NTSC制式 B/W 信号模拟

资料参考http://www.rickard.gunee.com/projects/video/pic/howto.phphttp://tinyvga.com/avr-sdram-vgahttp://www.serasidis.gr/circuits/colour_bar_gen/colour_bar_gen.htmhttp://belogic.com/uzebox/index.asp以下引用自 http://eyetap.org/ece385/lab5.htmSEQUENCE:Horizontal sync (hsync) pulse: Start each scanline with 0.3V, then 0V
发表于 2018-10-17
AVR Mega16 PAL/NTSC制式 B/W 信号模拟

AVR使用范例--使用Bootloader 升级芯片内程序详解

Bootloader是flash中高地址的一个程序区域,通过它可以实现程序的运行控制,程序更新等。本页给出的是通过串口实现在线更新的方法。程序编译环境:icc avr 6.31。如果你使用Atmega16芯片,7.3728M晶振,1024的bootloader区,19200的波特率,那么你直接使用下面的hex文件就可以了,下载hex文件。本站的开发板内,预制这个hex文件,可以按照本页的方法用串口线直接更新程序。否则,你需要对程序进行调整,然后重新编译Bootloader的hex文件,下载软件包,软件中需要更改的部分:芯片的类型#include //选择对应的芯片Bootloader区的大小,和ICC的option相对
发表于 2018-10-15
AVR使用范例--使用Bootloader 升级芯片内程序详解

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved