📄 delay.lis
字号:
.module delay.c
.area text(rom, con, rel)
0000 .dbfile D:\NEW\ECHO\delay.c
0000 .dbfunc e ds_delay _ds_delay fV
0000 ; n -> R16
.even
0000 _ds_delay::
0000 .dbline -1
0000 .dbline 5
0000 ; #define DELAY_C
0000 ; #include "includes.h"
0000 ; #define XTAL 4 //晶振频率,单位MHz
0000 ; void ds_delay(unsigned char n)//speciel delay for ds18b20
0000 ; { //7.3752MHz n=254>>> t=99us
0000 .dbline 6
0000 01C0 xjmp L5
0002 L2:
0002 .dbline 6
0002 L3:
0002 .dbline 6
0002 0A95 dec R16
0004 L5:
0004 .dbline 6
0004 ; for( ;n!=0;n--);
0004 0023 tst R16
0006 E9F7 brne L2
0008 .dbline -2
0008 .dbline 7
0008 ; }
0008 L1:
0008 .dbline 0 ; func end
0008 0895 ret
000A .dbsym r n 16 c
000A .dbend
000A .dbfunc e delay_1us _delay_1us fV
.even
000A _delay_1us::
000A .dbline -1
000A .dbline 10
000A ;
000A ; void delay_1us(void) //1us延时函数
000A ; {
000A .dbline 11
000A ; asm("nop");
000A 0000 nop
000C .dbline -2
000C .dbline 12
000C ; }
000C L6:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
000E .dbfunc e delay_nus _delay_nus fV
000E ; i -> R20,R21
000E ; n -> R22,R23
.even
000E _delay_nus::
000E 0E940000 xcall push_gset2
0012 B801 movw R22,R16
0014 .dbline -1
0014 .dbline 15
0014 ;
0014 ; void delay_nus(unsigned int n) //N us延时函数
0014 ; {
0014 .dbline 16
0014 ; unsigned int i=0;
0014 4427 clr R20
0016 5527 clr R21
0018 .dbline 17
0018 ; for (i=0;i<n;i++)
0018 03C0 xjmp L11
001A L8:
001A .dbline 18
001A F7DF xcall _delay_1us
001C L9:
001C .dbline 17
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L11:
0020 .dbline 17
0020 4617 cp R20,R22
0022 5707 cpc R21,R23
0024 D0F3 brlo L8
0026 .dbline -2
0026 .dbline 19
0026 ; delay_1us();
0026 ; }
0026 L7:
0026 0E940000 xcall pop_gset2
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r i 20 i
002C .dbsym r n 22 i
002C .dbend
002C .dbfunc e delay_1ms _delay_1ms fV
002C ; i -> R16,R17
.even
002C _delay_1ms::
002C .dbline -1
002C .dbline 22
002C ;
002C ; void delay_1ms(void) //1ms延时函数
002C ; {
002C .dbline 24
002C 0027 clr R16
002E 1127 clr R17
0030 02C0 xjmp L16
0032 L13:
0032 .dbline 24
0032 L14:
0032 .dbline 24
0032 0F5F subi R16,255 ; offset = 1
0034 1F4F sbci R17,255
0036 L16:
0036 .dbline 24
0036 ; unsigned int i;
0036 ; for (i=0;i<(unsigned int)(XTAL*143-2);i++);
0036 0A33 cpi R16,58
0038 E2E0 ldi R30,2
003A 1E07 cpc R17,R30
003C D0F3 brlo L13
003E .dbline -2
003E .dbline 25
003E ; }
003E L12:
003E .dbline 0 ; func end
003E 0895 ret
0040 .dbsym r i 16 i
0040 .dbend
0040 .dbfunc e delay_nms _delay_nms fV
0040 ; i -> R20,R21
0040 ; n -> R22,R23
.even
0040 _delay_nms::
0040 0E940000 xcall push_gset2
0044 B801 movw R22,R16
0046 .dbline -1
0046 .dbline 28
0046 ;
0046 ; void delay_nms(unsigned int n) //N ms延时函数
0046 ; {
0046 .dbline 29
0046 ; unsigned int i=0;
0046 4427 clr R20
0048 5527 clr R21
004A .dbline 30
004A ; for (i=0;i<n;i++)
004A 03C0 xjmp L21
004C L18:
004C .dbline 31
004C .dbline 32
004C EFDF xcall _delay_1ms
004E .dbline 33
004E L19:
004E .dbline 30
004E 4F5F subi R20,255 ; offset = 1
0050 5F4F sbci R21,255
0052 L21:
0052 .dbline 30
0052 4617 cp R20,R22
0054 5707 cpc R21,R23
0056 D0F3 brlo L18
0058 .dbline -2
0058 .dbline 34
0058 ; {
0058 ; delay_1ms();
0058 ; }
0058 ; }
0058 L17:
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 + -