📄 delay.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 + -