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

📄 delay.lis

📁 基于M16的字符液晶1602的驱动
💻 LIS
字号:
                        .module delay.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\avr\1602测试程序\delay.c
 0000                   .dbfunc e delay_1us _delay_1us fV
 0000           ;              i -> R16,R17
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; #define _DELAY_C_
 0000           ; #include "DELAY.H" //用户自己定义的头文件
 0000           ; 
 0000           ; //1us延时函数
 0000           ; void delay_1us( void )
 0000           ; {
 0000                   .dbline 7
 0000           ;    uint i = 1;
 0000 01E0              ldi R16,1
 0002 10E0              ldi R17,0
 0004 01C0              xjmp L3
 0006           L2:
 0006                   .dbline 9
 0006           ;    while( i-- )
 0006           ;    {
 0006                   .dbline 10
 0006           ;       asm("nop");
 0006 0000              nop
 0008                   .dbline 11
 0008           ;    }
 0008           L3:
 0008                   .dbline 8
 0008 1801              movw R2,R16
 000A 0150              subi R16,1
 000C 1040              sbci R17,0
 000E 2220              tst R2
 0010 D1F7              brne L2
 0012 3320              tst R3
 0014 C1F7              brne L2
 0016           X0:
 0016                   .dbline -2
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbsym r i 16 i
 0018                   .dbend
 0018                   .dbfunc e delay_nus _delay_nus fV
 0018           ;              i -> R20,R21
 0018           ;              n -> R10,R11
                        .even
 0018           _delay_nus::
 0018 0E940000          xcall push_xgset300C
 001C 5801              movw R10,R16
 001E                   .dbline -1
 001E                   .dbline 16
 001E           ; }
 001E           ; 
 001E           ; //nus延时函数
 001E           ; void delay_nus( uint n )
 001E           ; {
 001E                   .dbline 17
 001E           ;    uint i = 0;
 001E 4427              clr R20
 0020 5527              clr R21
 0022                   .dbline 18
 0022           ;    for (i = 0; i < n; i++)
 0022 03C0              xjmp L9
 0024           L6:
 0024                   .dbline 19
 0024           ;    delay_1us();
 0024 EDDF              xcall _delay_1us
 0026           L7:
 0026                   .dbline 18
 0026 4F5F              subi R20,255  ; offset = 1
 0028 5F4F              sbci R21,255
 002A           L9:
 002A                   .dbline 18
 002A 4A15              cp R20,R10
 002C 5B05              cpc R21,R11
 002E D0F3              brlo L6
 0030           X1:
 0030                   .dbline -2
 0030           L5:
 0030                   .dbline 0 ; func end
 0030 0C940000          xjmp pop_xgset300C
 0034                   .dbsym r i 20 i
 0034                   .dbsym r n 10 i
 0034                   .dbend
 0034                   .dbfunc e delay_1ms _delay_1ms fV
 0034           ;              i -> R16,R17
                        .even
 0034           _delay_1ms::
 0034                   .dbline -1
 0034                   .dbline 24
 0034           ; }
 0034           ; 
 0034           ; //1ms延时函数
 0034           ; void delay_1ms( void )
 0034           ; {
 0034                   .dbline 26
 0034           ;    uint i;
 0034           ;    for (i = 0; i < 1140; i++)
 0034 0027              clr R16
 0036 1127              clr R17
 0038 02C0              xjmp L14
 003A           L11:
 003A                   .dbline 27
 003A           ;    {;}
 003A                   .dbline 27
 003A                   .dbline 27
 003A           L12:
 003A                   .dbline 26
 003A 0F5F              subi R16,255  ; offset = 1
 003C 1F4F              sbci R17,255
 003E           L14:
 003E                   .dbline 26
 003E 0437              cpi R16,116
 0040 E4E0              ldi R30,4
 0042 1E07              cpc R17,R30
 0044 D0F3              brlo L11
 0046           X2:
 0046                   .dbline -2
 0046           L10:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbsym r i 16 i
 0048                   .dbend
 0048                   .dbfunc e delay_nms _delay_nms fV
 0048           ;              i -> R20,R21
 0048           ;              n -> R10,R11
                        .even
 0048           _delay_nms::
 0048 0E940000          xcall push_xgset300C
 004C 5801              movw R10,R16
 004E                   .dbline -1
 004E                   .dbline 32
 004E           ; }
 004E           ; 
 004E           ; //nms延时函数
 004E           ; void delay_nms( uint n )
 004E           ; {
 004E                   .dbline 33
 004E           ;    uint i = 0;
 004E 4427              clr R20
 0050 5527              clr R21
 0052                   .dbline 34
 0052           ;    for (i = 0; i < n; i++)
 0052 03C0              xjmp L19
 0054           L16:
 0054                   .dbline 35
 0054           ;    delay_1ms();
 0054 EFDF              xcall _delay_1ms
 0056           L17:
 0056                   .dbline 34
 0056 4F5F              subi R20,255  ; offset = 1
 0058 5F4F              sbci R21,255
 005A           L19:
 005A                   .dbline 34
 005A 4A15              cp R20,R10
 005C 5B05              cpc R21,R11
 005E D0F3              brlo L16
 0060           X3:
 0060                   .dbline -2
 0060           L15:
 0060                   .dbline 0 ; func end
 0060 0C940000          xjmp pop_xgset300C
 0064                   .dbsym r i 20 i
 0064                   .dbsym r n 10 i
 0064                   .dbend
 0064                   .dbfunc e delay_ns _delay_ns fV
 0064           ;              i -> R10
 0064           ;              n -> R12
                        .even
 0064           _delay_ns::
 0064 AA92              st -y,R10
 0066 CA92              st -y,R12
 0068 C02E              mov R12,R16
 006A                   .dbline -1
 006A                   .dbline 40
 006A           ; }
 006A           ; 
 006A           ; //延时1S
 006A           ; void delay_ns( uchar n )
 006A           ; {
 006A                   .dbline 42
 006A           ;     uchar i;
 006A           ;       for( i = 0; i < n; i++ )
 006A AA24              clr R10
 006C 04C0              xjmp L24
 006E           L21:
 006E                   .dbline 43
 006E           ;       {
 006E                   .dbline 44
 006E           ;               delay_nms( 1000 );
 006E 08EE              ldi R16,1000
 0070 13E0              ldi R17,3
 0072 EADF              xcall _delay_nms
 0074                   .dbline 45
 0074           ;       }
 0074           L22:
 0074                   .dbline 42
 0074 A394              inc R10
 0076           L24:
 0076                   .dbline 42
 0076 AC14              cp R10,R12
 0078 D0F3              brlo L21
 007A           X4:
 007A                   .dbline -2
 007A           L20:
 007A                   .dbline 0 ; func end
 007A C990              ld R12,y+
 007C A990              ld R10,y+
 007E 0895              ret
 0080                   .dbsym r i 10 c
 0080                   .dbsym r n 12 c
 0080                   .dbend
 0080           ; }
 0080           ;       

⌨️ 快捷键说明

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