⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delay.lis

📁 GCC-AVR application builder : 2007-8-31 18:00:11 Target : M16 Crystal: 7.3728Mhz 作者:小马哈 功能:SP
💻 LIS
字号:
                        .module delay.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\TEMP\m16spi\delay.c
 0000                   .dbfunc e delay_1ms _delay_1ms fV
 0000           ;              i -> R16,R17
                        .even
 0000           _delay_1ms::
 0000                   .dbline -1
 0000                   .dbline 17
 0000           ;         
 0000           ; /**************************************************************
 0000           ; *       文件名:            delay.c                           *
 0000           ; *       描述:              延时函数实现文件                  *
 0000           ; *       作者:              zhang                             *
 0000           ; *       编写日期:          2006.8.12                         *
 0000           ; *       注意事项:          ??                                *
 0000           ; *       修改人:            ??                                *
 0000           ; *       修改日期:          ??                                *
 0000           ; *       备注:              ??                                *
 0000           ; **************************************************************/
 0000           ; 
 0000           ; #include "delay.h"
 0000           ; #include "macros.h"
 0000           ; 
 0000           ; void delay_1ms(void)
 0000           ; {
 0000                   .dbline 19
 0000           ;       uint i;
 0000           ;       for (i=1;i<(uint)(xtal*143-2);i++)
 0000 01E0              ldi R16,1
 0002 10E0              ldi R17,0
 0004 02C0              xjmp L5
 0006           L2:
 0006                   .dbline 20
 0006           L3:
 0006                   .dbline 19
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 19
 000A 0E3E              cpi R16,238
 000C E8E0              ldi R30,8
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 16 i
 0014                   .dbend
 0014                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0014           _delay_1us::
 0014                   .dbline -1
 0014                   .dbline 24
 0014           ;       ;
 0014           ; }
 0014           ; 
 0014           ; void delay_1us(void)
 0014           ; {
 0014                   .dbline 25
 0014           ;       asm("nop");
 0014 0000              nop
 0016                   .dbline 26
 0016           ;       asm("nop");
 0016 0000              nop
 0018                   .dbline 27
 0018           ;       asm("nop");asm("nop");
 0018 0000              nop
 001A                   .dbline 27
 001A 0000              nop
 001C                   .dbline -2
 001C           L6:
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbend
 001E                   .dbfunc e delay_nms _delay_nms fV
 001E           ;              i -> R20,R21
 001E           ;              n -> R22,R23
                        .even
 001E           _delay_nms::
 001E 0E940000          xcall push_gset2
 0022 B801              movw R22,R16
 0024                   .dbline -1
 0024                   .dbline 31
 0024           ; }
 0024           ; 
 0024           ; void delay_nms(uint n)
 0024           ; {
 0024                   .dbline 32
 0024           ;       uint i=0;
 0024 4427              clr R20
 0026 5527              clr R21
 0028                   .dbline 33
 0028           ;       for ( i=0; i<n; i++)
 0028 03C0              xjmp L11
 002A           L8:
 002A                   .dbline 34
 002A                   .dbline 35
 002A EADF              xcall _delay_1ms
 002C                   .dbline 36
 002C           L9:
 002C                   .dbline 33
 002C 4F5F              subi R20,255  ; offset = 1
 002E 5F4F              sbci R21,255
 0030           L11:
 0030                   .dbline 33
 0030 4617              cp R20,R22
 0032 5707              cpc R21,R23
 0034 D0F3              brlo L8
 0036                   .dbline 37
 0036           ;       {
 0036           ;               delay_1ms();
 0036           ;       }
 0036           ;     WDR();
 0036 A895              wdr
 0038                   .dbline -2
 0038           L7:
 0038 0E940000          xcall pop_gset2
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r i 20 i
 003E                   .dbsym r n 22 i
 003E                   .dbend
 003E                   .dbfunc e delay_nus _delay_nus fV
 003E           ;              i -> R20,R21
 003E           ;              n -> R22,R23
                        .even
 003E           _delay_nus::
 003E 0E940000          xcall push_gset2
 0042 B801              movw R22,R16
 0044                   .dbline -1
 0044                   .dbline 41
 0044           ; }
 0044           ; 
 0044           ; void delay_nus(uint n)
 0044           ; {
 0044                   .dbline 42
 0044           ;       uint i=0;
 0044 4427              clr R20
 0046 5527              clr R21
 0048                   .dbline 43
 0048           ;       for ( i=0; i<n; i++)
 0048 03C0              xjmp L16
 004A           L13:
 004A                   .dbline 44
 004A                   .dbline 45
 004A E4DF              xcall _delay_1us
 004C                   .dbline 46
 004C           L14:
 004C                   .dbline 43
 004C 4F5F              subi R20,255  ; offset = 1
 004E 5F4F              sbci R21,255
 0050           L16:
 0050                   .dbline 43
 0050 4617              cp R20,R22
 0052 5707              cpc R21,R23
 0054 D0F3              brlo L13
 0056                   .dbline 47
 0056           ;       {
 0056           ;               delay_1us();
 0056           ;       }       
 0056           ;     WDR();
 0056 A895              wdr
 0058                   .dbline -2
 0058           L12:
 0058 0E940000          xcall pop_gset2
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r i 20 i
 005E                   .dbsym r n 22 i
 005E                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -