AVR/Atmel Studio延时函数没有被调用的问题

发布者:bemaii最新更新时间:2020-04-18 来源: eefocus关键字:AVR  Atmel  Studio  延时函数  调用 手机看文章 扫描二维码
随时随地手机看文章

最近刚接触Atmel Studio,有很多东西不熟悉。弄了个范例程序,想自己改个跑马灯的程序,需要用到延时,可是延时一做成函数就有问题,根本没有延时的效果,把代码放到主函数里却没有问题。使用avr simulator软件仿真试试,发现延时函数根本没有被调用,可是函数明明声明得没有问题啊。


网上一查发现是GCC编译器优化导致的。这下我明白了,因为GCC编译器会误认为这是没有用的的一段程序,因为他不起任何实际计算效果,目的正是为了占用时间,在进行速度优化的时候便将其省掉了。


解决方法很简单,只要将GCC编译的优化选项关掉即可,或者在延时函数的变量前加volatile。


void Delayabc(uint8_t d)

{

volatile uint8_t a,b,c;

a = 200;

while (a--)

{

b = 200;

while (b--)

{

c = 200;

while (c--)

{

while (d--);

}

}

}

}

关键字:AVR  Atmel  Studio  延时函数  调用 引用地址:AVR/Atmel Studio延时函数没有被调用的问题

上一篇:基于Atmega128单片机设计的嵌入式控制器
下一篇:基于Atmega16单片机的PSD输出信号数字采集电路设计

推荐阅读最新更新时间:2024-11-01 11:46

AVR简单好用的4x4矩阵键盘
// Target : ATMEGA16 // Crystal: 8.0000Mhz //key.h #ifndef _4X4_H_ #define _4X4_H_ #define No_key 255 #define key_port PORTB #define key_port_ddr DDRB #define key_port_pin PINB unsigned char keyboard_Scan(void); #endif //key.c #include iom16v.h #include macros.h #include key.h const unsigned char key_t
[单片机]
使用74LS164将AVR的串口输出扩为并口输出
系统功能 使用74LS164将AVR的串口输出扩为并口输出。 硬件设计     AVR主控电路原理图 串行输出扩展为并行输出芯片74LS164控制电路原理图 软件设计 下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解! //目标系统: 基于AVR单片机 //应用软件: ICC AVR /*01010101010101010101010101010101010101010101010101010101010101010101 ---------------------------------------------------------------------- 实验内容: 使用PB口
[单片机]
使用74LS164将<font color='red'>AVR</font>的串口输出扩为并口输出
AVR 定时记数器0 普通模式的简单应用
#include avr/io.h #include util/delay.h #include avr/interrupt.h #define ling 0x80 //这里是设制从最高位一个一个的点亮 volatile unsigned char count,i = 0,j = 0; //设制两个变量 void Timer0_Init(void) //定时器0的初始化 { TCNT0 = 0x3d; //给计数器赋初值 TCCR0 = 0x05; //CLK/1024分频 TIMSK = 0x01; //始能定时器0的溢出中断 sei();
[单片机]
51,AVR,PIC,MSP430,STM32单片机比较
51,AVR,PIC,MSP430,STM32比较:常用型号,特点,优缺点,编译软件,下载软件,下载方式。 传统8051:适合菜鸟入门,容易上手,价格一般(从性价比方面说)。 缺点:解密容易(传统51说:谁让咱出道早呢,大家都研究我,哎!哭......)一般功能也有,, 但AD、eeprom等功能要靠扩展,增加硬件和软件负担。 IDE环境推荐 keil。编程器自己自制ISP下载线就行,好做,成本5元左右。 8051:MCS-51系列 INTEL公司 8031:无ROM 8051:一次性掩膜ROM 8751:多次写EPROM stc 51系列:(增强型51单片机)价格便宜(从性价比方面说),功能多,
[单片机]
TWI总线模块化设计在智能机器人中的应用
引言 模块化设计的机器人系统由主控制模块和扩展模块构成,主要用于检测机器人周围环境信息和机器人自身运动状态,实时获取各种传感器信息,并对机器人运动进行控制。由于要采集的数据信息很多,本系统应用了TWI总线构建模块化架构,模块均采用AVR单片机为主控芯 片:1片ATmega128(主控)、10片ATmega16、2片ATmega64和3片ATmega8。主控制器要实时地汇总并分析各单片机的信息才能对机器人下一步动作作出决策,因此,各单片机之间的通信显得尤为重要。另外,为了方便对电子罗盘进行标定,需要由主控制器向电子罗盘模块发送相应指令。也就是说,主控制模块与扩展模块之间需要实现双向多字节通信,这是一个通信难点。本系统全部模块均采
[单片机]
TWI总线模块化设计在智能机器人中的应用
AVR中文版在线编程软件
该软件几乎支持AVR现有的全部系列 Support AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, AT90S4434, AT90S8515, AT90S8535 Flash m IC ro Support AT90S2323, AT90S2343, AT90S2333, AT90S4433, AT90S4434, AT90S8535, AT90S8534 Auto detect AVR microcontroller type Support the AVR microcontroller ATmega603, ATmega103, ATmega161, ATmeg
[单片机]
AVR的中断问题
AVR单片机在同一个优先级中,中断向量入口地址越低,其优先级越高。AVR单片机在响应中断以后,会禁止系统响应其余中断。如果程序需要在某个中断服务程序中响应其它中断事件,可以在该中断服务程序中用SEI指令或_SEI()(IAR)、 SEI()(ICCAVR)重新使能全局中断即可。否则,AVR单片机只有在退出中断进程时,才重新使能全局中断。 任一中断发生时全局中断使能位I 被清零,从而禁止了所有其他的中断。用户软件可以在中断程序里置位I 来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。 AVR 退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中断。要注意的是,进入中断服务程序时状态寄存器不会自动保存
[单片机]
爱特梅尔CryptoAuthentication器件为微控制器系统提高安全性
     Atmel 是从事微控制器、先进逻辑、混合信号、非易失性存储器以及射频元器件设计与制造的全球领导商。凭借业界最广泛的知识产权技术组合之一,Atmel 得以为电子行业提供主要面向消费、工业、安全、通信、计算和汽车市场的完备系统解决方案。 凭借其新的触摸技术部门(前身为 Quantum Research Group(TM)),该公司现针对移动通信和娱乐市场的应用以及个人电脑、家电和汽车应用提供专用的触摸传感控制器。   爱特梅尔公司发布具有增强的硬件安全特性和更大灵活性的易于使用的新型加密认证(cryptographic authentication)器件。具有超低功耗的Atmel ATSHA204是首款带有4.5Kbit E
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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