📄 delay.lis
字号:
.module delay.c
.area text(rom, con, rel)
0000 .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\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 ; /*-----------------------------------------------------------------------
0000 ; 延时函数
0000 ; 系统时钟:8M
0000 ; -----------------------------------------------------------------------*/
0000 ; void delay_1us(void) //1us延时函数
0000 ; {
0000 .dbline 7
0000 ; unsigned int i=0;
0000 0027 clr R16
0002 1127 clr R17
0004 .dbline 8
0004 ; for (i=0;i<8;i++)
0004 03C0 rjmp L5
0006 L2:
0006 .dbline 9
0006 .dbline 10
0006 0000 nop
0008 .dbline 11
0008 L3:
0008 .dbline 8
0008 0F5F subi R16,255 ; offset = 1
000A 1F4F sbci R17,255
000C L5:
000C .dbline 8
000C 0830 cpi R16,8
000E E0E0 ldi R30,0
0010 1E07 cpc R17,R30
0012 C8F3 brlo L2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r i 16 i
0016 .dbend
0016 .dbfunc e delay_nus _delay_nus fV
0016 ; i -> R20,R21
0016 ; n -> R22,R23
.even
0016 _delay_nus::
0016 00D0 rcall push_gset2
0018 B801 movw R22,R16
001A .dbline -1
001A .dbline 15
001A ; {
001A ; asm("nop");
001A ; }
001A ; }
001A ;
001A ; void delay_nus(unsigned int n) //N us延时函数
001A ; {
001A .dbline 16
001A ; unsigned int i=0;
001A 4427 clr R20
001C 5527 clr R21
001E .dbline 17
001E ; for (i=0;i<n;i++)
001E 03C0 rjmp L10
0020 L7:
0020 .dbline 18
0020 EFDF rcall _delay_1us
0022 L8:
0022 .dbline 17
0022 4F5F subi R20,255 ; offset = 1
0024 5F4F sbci R21,255
0026 L10:
0026 .dbline 17
0026 4617 cp R20,R22
0028 5707 cpc R21,R23
002A D0F3 brlo L7
002C .dbline -2
002C L6:
002C 00D0 rcall pop_gset2
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r i 20 i
0030 .dbsym r n 22 i
0030 .dbend
0030 .dbfunc e delay_1ms _delay_1ms fV
0030 ; i -> R16,R17
.even
0030 _delay_1ms::
0030 .dbline -1
0030 .dbline 22
0030 ; delay_1us();
0030 ; }
0030 ;
0030 ; void delay_1ms(void) //1ms延时函数
0030 ; {
0030 .dbline 24
0030 0027 clr R16
0032 1127 clr R17
0034 02C0 rjmp L15
0036 L12:
0036 .dbline 24
0036 L13:
0036 .dbline 24
0036 0F5F subi R16,255 ; offset = 1
0038 1F4F sbci R17,255
003A L15:
003A .dbline 24
003A ; unsigned int i;
003A ; for (i=0;i<1140;i++);
003A 0437 cpi R16,116
003C E4E0 ldi R30,4
003E 1E07 cpc R17,R30
0040 D0F3 brlo L12
0042 .dbline -2
0042 L11:
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbsym r i 16 i
0044 .dbend
0044 .dbfunc e delay_nms _delay_nms fV
0044 ; i -> R20,R21
0044 ; n -> R22,R23
.even
0044 _delay_nms::
0044 00D0 rcall push_gset2
0046 B801 movw R22,R16
0048 .dbline -1
0048 .dbline 28
0048 ; }
0048 ;
0048 ; void delay_nms(unsigned int n) //N ms延时函数
0048 ; {
0048 .dbline 29
0048 ; unsigned int i=0;
0048 4427 clr R20
004A 5527 clr R21
004C .dbline 30
004C ; for (i=0;i<n;i++)
004C 03C0 rjmp L20
004E L17:
004E .dbline 31
004E F0DF rcall _delay_1ms
0050 L18:
0050 .dbline 30
0050 4F5F subi R20,255 ; offset = 1
0052 5F4F sbci R21,255
0054 L20:
0054 .dbline 30
0054 4617 cp R20,R22
0056 5707 cpc R21,R23
0058 D0F3 brlo L17
005A .dbline -2
005A L16:
005A 00D0 rcall 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 + -