📄 delay.lis
字号:
.module delay.c
.area text(rom, con, rel)
0000 .dbfile F:\radio\第十二篇\sleep\delay.c
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 3
0000 ; /*时钟为8MHZ*/
0000 ; void delay_1us(void)
0000 ; {
0000 .dbline 4
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_us _delay_us fV
0004 ; itemp -> R20,R21
0004 ; itimes -> R22,R23
.even
0004 _delay_us::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 7
000A ; }
000A ; void delay_us(unsigned int itimes)
000A ; {
000A .dbline 9
000A ; unsigned int itemp;
000A ; for (itemp=0;itemp<itimes;itemp++)
000A 4427 clr R20
000C 5527 clr R21
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 10
0010 .dbline 11
0010 F7DF xcall _delay_1us
0012 .dbline 12
0012 L4:
0012 .dbline 9
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 9
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r itemp 20 i
0022 .dbsym r itimes 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; itemp -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 15
0022 ; {
0022 ; delay_1us();
0022 ; }
0022 ; }
0022 ; void delay_1ms(void)
0022 ; {
0022 .dbline 17
0022 01E0 ldi R16,1
0024 10E0 ldi R17,0
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 17
0028 L9:
0028 .dbline 17
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 17
002C ; unsigned int itemp;
002C ; for(itemp=1;itemp<1142;itemp++);
002C 0637 cpi R16,118
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r itemp 16 i
0036 .dbend
0036 .dbfunc e delay_ms _delay_ms fV
0036 ; itemp -> R20,R21
0036 ; itimes -> R22,R23
.even
0036 _delay_ms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 20
003C ; }
003C ; void delay_ms(unsigned int itimes)
003C ; {
003C .dbline 22
003C ; unsigned int itemp;
003C ; for (itemp=0;itemp<itimes;itemp++)
003C 4427 clr R20
003E 5527 clr R21
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 23
0042 .dbline 24
0042 EFDF xcall _delay_1ms
0044 .dbline 25
0044 L14:
0044 .dbline 22
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 22
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r itemp 20 i
0054 .dbsym r itimes 22 i
0054 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -