原创 AVR软件延时(ICCAVR)

2009-7-24 19:13 7884 9 12 分类: MCU/ 嵌入式

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
/*--------------------------------------------------------------*/

文章评论3条评论)

登录后参与讨论

xucun915_925777961 2009-11-6 13:25

^_^

用户1513245 2009-8-9 21:58

好东西啊!

用户222124 2009-7-25 08:06

很详细,O(∩_∩)O哈哈~,谢啦!
相关推荐阅读
用户149863 2010-05-22 22:40
LCD简单菜单显示
LCD简单菜单显示显示器件为图形型LCD12864(主控芯片KS0108)什么都不带!包含以下文件:LCD菜单(测试)LCD菜单(简单)LCD菜单(界面)LCD菜单(遥控器)希望对大家有用^_^感兴趣...
用户149863 2010-05-22 14:33
LCD12864(KS0108)液晶演示程序
LCD12864(KS0108)液晶演示程序LCD12864(KS0108)液晶演示程序视频: LCD12864演示程序(什么都不带的液晶) 视频演示网址:http://v.youku.com/v_s...
用户149863 2009-10-22 18:27
AVR代码
AVR单片机程序代码集,给需要的朋友们参考呵呵,都是自己一边学一边写的,一个一个字符从键盘敲出来的^_^希望对大家有用:-)呵呵,编译软件为:  ICCAVR V6.31A版本一共七个压缩包,呵呵,分...
用户149863 2009-10-22 15:18
VGA相关资料
VGA相关资料呵呵^_^如果你想玩的就请下载,有很多东西,都是花了我好几个夜晚才搜到的都是网上的资料:-)有兴趣的可以做做哦 包含以下文件夹:├─VGA+2051│  │  共享-----国外优秀电子...
用户149863 2009-10-10 14:46
PS/2 键盘与单片机
程序打包PS/2 键盘与单片机接口用LCD1602显示调试成功所以拿出来给大家分享,希望对大家有用,呵呵^_^用PS/2键盘做系统输入部分蛮方便的哦!可以使用Backspace/Esc/Tab/Cap...
用户149863 2009-08-17 19:54
AVR端口操作宏定义,便于移植
AVR端口操作宏定义头文件(ICCAVRIO.H),便于移植(ICCAVR编译环境) 压缩包里面有网上的相关资料,把它看完,相信你会更加了解红宏定义的^_^还有头文件在ICCAVRIO.H在Inclu...
我要评论
3
9
关闭 站长推荐上一条 /2 下一条