专栏中心

EEPW首页 > 专栏 > AVR软件延时(ICCAVR)

AVR软件延时(ICCAVR)

发布人:0750long 时间:2009-07-25 来源:工程师 发布文章
 

 

zipAVR软件延时(ICCAVR)

压缩包 包含所有调试程序以及 AVR studio仿真文件

ICCAVR环境编译,还有AVR软件延时计算工具(C-Free写的,支持中文)

呵呵,在网上找了一下AVR单片机的软件延时程序,

觉得不怎么方便,于是就自己做了一个软件

很方便的,只要输入你所需要的延迟时间

得到所需延时的代码函数,直接调用就可以了

希望对有需要的朋友有用^_^

 

 

 

,'''╭⌒╮⌒╮.',''',,',.'',,','',. 
 ╱◥██◣''o',''',,',.''.'',,',. 
|田|田田│ '',,',.',''',,',.'' 
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬


二重循环do_while(不可传递参数)
调试记录:
/*--------------------------------------------------------------*/
//ICC-AVR application builder : 2009-7-21 10:46:10
// Target : M8
// Crystal: 1.000Mhz
/*--------------------------------------------------------------*/


1、C语言程序:
/*--------------------------------------------------------------*/
//二重循环(不传递参数)
void delay(void)
{
 unsigned char i, j;
 
 j = 6; do{i = 5; do{i--;}while(i); j--;}while(j);
}


2、编译后的汇编程序:
_delay:
  j                    --> R16
  i                    --> R18             机器周期
    0033 E006      LDI R16,6            1
    0034 E025      LDI R18,5            1
    0035 952A      DEC R18             1 
    0036 2322      TST R18               1
    0037 F7E9      BNE 0x0035       2/1
    0038 950A      DEC R16             1
    0039 2300      TST R16               1
    003A F7C9      BNE 0x0034     2/1
    003B 9508      RET                     4

    0040 EF8F      LDI R24,0xFF      1
    0041 BB85      OUT 0x15,R24    1 
    0042 DFF0      RCALL _delay     3

    0043 2422      CLR R2                1
    0044 BA25      OUT 0x15,R2     1
    0045 DFED      RCALL _delay   3

◆赋值:i = 5; j = 6;
WINAVR 调试记录
40  us
193 us
193-40 = 153
     LDI OUT RCALL _delay
153 = 1 + 1 + 3  +  148
 DEC TST BNE   i  BNE  LDI DEC TST BNE   j  LDI BNE RET
148 = {[(1 + 1 + 2) * 5 - 1] + 1 + 1 + 1 + 2} * 6 + 1 - 1 + 4

◆推出公式:
T = 4*[(i+1)*j+1]

◆验证:
4*[(5+1)*6+1] = 148  ok!

◆结论:
所以加上RCALL,总共延迟时间:T = 4*[(i+1)*j+1] + 3


◆赋值:i = 8; j = 9;
40  us
373 us
373-40 = 333
333 = 2 + 331
◆验证:
4*[(8+1)*9+1] + 3 = 331  ok! \(0^◇^0)/

 

/*--------------------------------------------------------------*/
★最终结论(机器周期为1us/振荡时钟为1MHz):
延迟时间T: T = 4*[(i+1)*j+1] + 3 us
最小延迟时间:T_min =  15  us
最大延迟时间:T_max = 261127  us
最小步进时间:T_step= 4  us
/*--------------------------------------------------------------*/

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

ASURO智能车走迷宫功能演示

视频 2010-02-01

RP5底盘改装智能车机器人作品01

视频 2010-02-01

担心“缺货”?供应担忧倒逼提前备货,2025 年末旺季 PC 出货量超预期

智能计算 2026-01-13

2026年全球通用具身智能机器人市场洞察与厂商评测报告

ASURO智能车功能检测演示

视频 2010-02-01

Melexis硅基RC缓冲器获利普思选用,携手开启汽车与工业能源管理技术新征程

国内首款AI+AR眼镜主控SoC芯片,一次性成功点亮

2009年第四届智能车竞赛北京科技大学表演车模(光电组)

视频 2010-02-01

ASURO循迹避障测速智能车平衡功能演示

视频 2010-02-01

2025年全球PC出货增长9%,内存与存储供应紧张或影响2026年表现

从“中国实践”到“全球样板”:西门子Mendix重构跨国工厂数字化新范式

IDC预测,2030年22亿AI Agent将作为“新数字劳动力”席卷全球

南芯科技发布“感知-运算-执行”全集成OIS防抖驱动芯片

采用Nordic nRF54L15 SoC驱动的设计优化型无线模组,在超紧凑外形中实现卓越性能

IDC FutureScape 2026:重塑中国智慧城市治理模式的十个关键预测

更多 培训课堂
更多 焦点
更多 视频

技术专区