📄 delay.lis
字号:
.module delay.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\1602\delay.c
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 8
0000 ; /*---------------------------------------延时函数-------------------------------------*/
0000 ;
0000 ; /*-----------------------------------------------------------------------
0000 ; 延时函数
0000 ; 系统时钟:8M
0000 ; -----------------------------------------------------------------------*/
0000 ; void delay_1us(void) //1us延时函数
0000 ; {
0000 .dbline 9
0000 ; asm("nop");
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 00D0 rcall push_gset2
0006 B801 movw R22,R16
0008 .dbline -1
0008 .dbline 13
0008 ; }
0008 ;
0008 ; void delay_nus(unsigned int n) //N us延时函数
0008 ; {
0008 .dbline 14
0008 ; unsigned int i=0;
0008 4427 clr R20
000A 5527 clr R21
000C .dbline 15
000C ; for (i=0;i<n;i++)
000C 03C0 rjmp L6
000E L3:
000E .dbline 16
000E F8DF rcall _delay_1us
0010 L4:
0010 .dbline 15
0010 4F5F subi R20,255 ; offset = 1
0012 5F4F sbci R21,255
0014 L6:
0014 .dbline 15
0014 4617 cp R20,R22
0016 5707 cpc R21,R23
0018 D0F3 brlo L3
001A .dbline -2
001A L2:
001A 00D0 rcall pop_gset2
001C .dbline 0 ; func end
001C 0895 ret
001E .dbsym r i 20 i
001E .dbsym r n 22 i
001E .dbend
001E .dbfunc e delay_1ms _delay_1ms fV
001E ; xtal -> R16
001E ; i -> R18,R19
.even
001E _delay_1ms::
001E .dbline -1
001E .dbline 20
001E ; delay_1us();
001E ; }
001E ;
001E ; void delay_1ms(void ) //延时1ms
001E ; {
001E .dbline 23
001E ; unsigned int i ;
001E ; unsigned char xtal;
001E ; xtal=4;
001E 04E0 ldi R16,4
0020 .dbline 24
0020 ; for (i=1;i<(xtal*143-2);i++)
0020 21E0 ldi R18,1
0022 30E0 ldi R19,0
0024 02C0 rjmp L11
0026 L8:
0026 .dbline 25
0026 .dbline 26
0026 .dbline 27
0026 L9:
0026 .dbline 24
0026 2F5F subi R18,255 ; offset = 1
0028 3F4F sbci R19,255
002A L11:
002A .dbline 24
002A 8FE8 ldi R24,143
002C 809F mul R24,R16
002E C001 movw R24,R0
0030 0297 sbiw R24,2
0032 2817 cp R18,R24
0034 3907 cpc R19,R25
0036 B8F3 brlo L8
0038 .dbline -2
0038 L7:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbsym r xtal 16 c
003A .dbsym r i 18 i
003A .dbend
003A .dbfunc e delay_nms _delay_nms fV
003A ; i -> R20,R21
003A ; n -> R22,R23
.even
003A _delay_nms::
003A 00D0 rcall push_gset2
003C B801 movw R22,R16
003E .dbline -1
003E .dbline 31
003E ; {
003E ; ;
003E ; }
003E ; }
003E ;
003E ; void delay_nms(unsigned int n) //延时nms
003E ; {
003E .dbline 32
003E ; unsigned int i=0 ;
003E 4427 clr R20
0040 5527 clr R21
0042 .dbline 33
0042 ; for(i=0;i<n;i++)
0042 03C0 rjmp L16
0044 L13:
0044 .dbline 34
0044 .dbline 35
0044 ECDF rcall _delay_1ms
0046 .dbline 36
0046 L14:
0046 .dbline 33
0046 4F5F subi R20,255 ; offset = 1
0048 5F4F sbci R21,255
004A L16:
004A .dbline 33
004A 4617 cp R20,R22
004C 5707 cpc R21,R23
004E D0F3 brlo L13
0050 .dbline -2
0050 L12:
0050 00D0 rcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -