www.pudn.com > digital_duoji.rar > delay.lis


                        .module delay.c 
                        .area text(rom, con, rel) 
 0000                   .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\delay.c 
 0000                   .dbfunc e delay_us _delay_us fV 
 0000           ;              t -> R16 
                        .even 
 0000           _delay_us:: 
 0000                   .dbline -1 
 0000                   .dbline 10 
 0000           ;  
 0000           ;  
 0000           ; #include  
 0000           ; #include "delay.h" 
 0000           ;  
 0000           ; /*----------------------------------------------------------------------- 
 0000           ; delay_us         :1us延时函数 
 0000           ; -----------------------------------------------------------------------*/ 
 0000           ; void delay_us(void) 
 0000           ; { 
 0000                   .dbline 11 
 0000           ;    unsigned char t=2; 
 0000 02E0              ldi R16,2 
 0002                   .dbline 12 
 0002           ;    t--; 
 0002 0A95              dec R16 
 0004                   .dbline -2 
 0004           L1: 
 0004                   .dbline 0 ; func end 
 0004 0895              ret 
 0006                   .dbsym r t 16 c 
 0006                   .dbend 
 0006                   .dbfunc e delay_nus _delay_nus fV 
 0006           ;              t -> R20,R21 
                        .even 
 0006           _delay_nus:: 
 0006 4A93              st -y,R20 
 0008 5A93              st -y,R21 
 000A A801              movw R20,R16 
 000C                   .dbline -1 
 000C                   .dbline 21 
 000C           ; } 
 000C           ;  
 000C           ; /*----------------------------------------------------------------------- 
 000C           ; delay_nus          :长延时函数 
 000C           ;  
 000C           ; 输入参数: t        :延时时间 us 
 000C           ; -----------------------------------------------------------------------*/ 
 000C           ; void delay_nus(unsigned int t) 
 000C           ; { 
 000C 01C0              xjmp L4 
 000E           L3: 
 000E                   .dbline 23 
 000E           ;     while (t--) 
 000E           ;        delay_us(); 
 000E F8DF              xcall _delay_us 
 0010           L4: 
 0010                   .dbline 22 
 0010 1A01              movw R2,R20 
 0012 4150              subi R20,1 
 0014 5040              sbci R21,0 
 0016 2220              tst R2 
 0018 D1F7              brne L3 
 001A 3320              tst R3 
 001C C1F7              brne L3 
 001E           X0: 
 001E                   .dbline -2 
 001E           L2: 
 001E                   .dbline 0 ; func end 
 001E 5991              ld R21,y+ 
 0020 4991              ld R20,y+ 
 0022 0895              ret 
 0024                   .dbsym r t 20 i 
 0024                   .dbend 
 0024                   .dbfunc e delay_ms _delay_ms fV 
                        .even 
 0024           _delay_ms:: 
 0024                   .dbline -1 
 0024                   .dbline 30 
 0024           ; } 
 0024           ;  
 0024           ; /*----------------------------------------------------------------------- 
 0024           ; delay_ms         :1ms延时函数 
 0024           ; -----------------------------------------------------------------------*/ 
 0024           ; void delay_ms(void) 
 0024           ; { 
 0024                   .dbline 31 
 0024           ;    delay_nus(1000); 
 0024 08EE              ldi R16,1000 
 0026 13E0              ldi R17,3 
 0028 EEDF              xcall _delay_nus 
 002A                   .dbline -2 
 002A           L6: 
 002A                   .dbline 0 ; func end 
 002A 0895              ret 
 002C                   .dbend 
 002C                   .dbfunc e delay_nms _delay_nms fV 
 002C           ;              t -> R20,R21 
                        .even 
 002C           _delay_nms:: 
 002C 4A93              st -y,R20 
 002E 5A93              st -y,R21 
 0030 A801              movw R20,R16 
 0032                   .dbline -1 
 0032                   .dbline 40 
 0032           ; } 
 0032           ;  
 0032           ; /*----------------------------------------------------------------------- 
 0032           ; delay_nms          :长延时函数 
 0032           ;  
 0032           ; 输入参数: t        :延时时间 ms 
 0032           ; -----------------------------------------------------------------------*/ 
 0032           ; void delay_nms(unsigned int t) 
 0032           ; { 
 0032 01C0              xjmp L9 
 0034           L8: 
 0034                   .dbline 42 
 0034           ;     while (t--) 
 0034           ;        delay_ms(); 
 0034 F7DF              xcall _delay_ms 
 0036           L9: 
 0036                   .dbline 41 
 0036 1A01              movw R2,R20 
 0038 4150              subi R20,1 
 003A 5040              sbci R21,0 
 003C 2220              tst R2 
 003E D1F7              brne L8 
 0040 3320              tst R3 
 0042 C1F7              brne L8 
 0044           X1: 
 0044                   .dbline -2 
 0044           L7: 
 0044                   .dbline 0 ; func end 
 0044 5991              ld R21,y+ 
 0046 4991              ld R20,y+ 
 0048 0895              ret 
 004A                   .dbsym r t 20 i 
 004A                   .dbend 
 004A           ; }