最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机delay延时仿真

来源:动视网 责编:小OO 时间:2025-09-30 01:39:39
文档

单片机delay延时仿真

Delay延时的仿真1)设置:target->xtal为12Mhz2)debugLED=0运行以前LED=0运行以后,该指令运行时间为390-3=1usdelay()运行以前delay()运行以后,delay()运行时间为400591-390=400201us=400.201ms●i=50000改为i=30000后,delay()运行时间为240513-390=240msvoiddelay()//函数定义{unsignedinti;//最大65535for(i=30000;i>0;i--)
推荐度:
导读Delay延时的仿真1)设置:target->xtal为12Mhz2)debugLED=0运行以前LED=0运行以后,该指令运行时间为390-3=1usdelay()运行以前delay()运行以后,delay()运行时间为400591-390=400201us=400.201ms●i=50000改为i=30000后,delay()运行时间为240513-390=240msvoiddelay()//函数定义{unsignedinti;//最大65535for(i=30000;i>0;i--)
Delay延时的仿真

1)设置: target->xtal 为12Mhz

2)debug

LED=0运行以前

LED=0运行以后,该指令运行时间为390-3=1us

delay()运行以前

delay()运行以后,delay()运行时间为400591-390=400201us=400.201ms

●i=50000改为i=30000后,delay()运行时间为240513-390=240ms

void delay()    // 函数定义

{

    unsigned int i;        // 最大65535

for (i=30000;i>0;i--);  

}

●i=50000改为i=70000后,延时时间按比例算约为400ms*7/5 = 560ms

70000超过了65536,实际为i=70000-65536= 44,观察值约为36ms

●延时1ms,i=125,延时1396-390=1006us

void delay1ms()    // 函数定义

{

    unsigned int i;        // 最大65535

for (i=125;i>0;i--);

}

●delayms(unsigned int n), delayms(1)延时时间为1427-390=1037us,因为运行while也要花时间,可以把delay1ms()内部的i=125改小一些比如i=124

void delayms(unsigned int n)

{

    while(n--) {

        delay1ms();

    }

}

小结:掌握调试方法,同时注意到unsigned int有表达范围

●LED-DELAY.ASM

P50 3.14, 延时时间50608-3=50605us=50.6ms

LED EQU P1.0

ORG 0000H

    JMP LOOP

LOOP:

    SETB LED

    CALL DEL50

    CLR  LED

    CALL DELAY

    JMP  LOOP

DEL50:     MOV  R7,#200

DEL1:    MOV  R6,#125

DEL2:    DJNZ R6,DEL2

        DJNZ R7,DEL1

        RET

END

DJNZ前

DJNZ后,R6值减1, 7d-7c=1, 时间2us, 9-7=2

DJNZ, decrease and jump if not zero, P48,(程序计数器, program counter)PC指向代码地址

作业:

1)仿真以下子程序,测量延时时间

DEL50a: MOV  R7,#100     ; 1us

DEL1a:    MOV  R6,#250

DEL2a:    DJNZ R6,DEL2a      ; 2us ; 250 * 2us = 500us

        DJNZ R7,DEL1a    ; 100 * 500us = 50000us = 50ms

        RET

DEL50b: MOV  R7,#50     ; 1us

DEL1b:    MOV  R6,#500 ; 500>256

DEL2b:    DJNZ R6,DEL2b      ; 2us ; 500 * 2us = 1000us

2)用汇编实现delay1ms, 延时1ms

3)预习:第二步实现的delay1ms汇编程序,嵌入到c程序中。教材有

文档

单片机delay延时仿真

Delay延时的仿真1)设置:target->xtal为12Mhz2)debugLED=0运行以前LED=0运行以后,该指令运行时间为390-3=1usdelay()运行以前delay()运行以后,delay()运行时间为400591-390=400201us=400.201ms●i=50000改为i=30000后,delay()运行时间为240513-390=240msvoiddelay()//函数定义{unsignedinti;//最大65535for(i=30000;i>0;i--)
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top