📄 delay.lis
字号:
.module delay.c
.area text(rom, con, rel)
0000 .dbfile D:\桌面\avr程序设计\电机控制\delay.c
0000 .dbfunc e Delay100us _Delay100us fV
0000 ; i -> R20
0000 ; x -> R16
.even
0000 _Delay100us::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 8
0004 ; // 文件名 delay.c 延时
0004 ;
0004 ; #include "config.h"
0004 ; /***************************************************************************
0004 ; 延时 M32 7.3728M 粗略计算
0004 ; */
0004 ; void Delay100us(uint8 x)
0004 ; {
0004 .dbline 10
0004 ; uint8 i; //4clock
0004 ; for(i=147;x!=0;x--)
0004 43E9 ldi R20,147
0006 06C0 xjmp L5
0008 L6:
0008 .dbline 11
0008 L7:
0008 .dbline 11
0008 842F mov R24,R20
000A 8150 subi R24,1
000C 482F mov R20,R24
000E 8823 tst R24
0010 D9F7 brne L6
0012 L3:
0012 .dbline 10
0012 0A95 dec R16
0014 L5:
0014 .dbline 10
0014 0023 tst R16
0016 C1F7 brne L7
0018 .dbline -2
0018 L1:
0018 0E940000 xcall pop_gset1
001C .dbline 0 ; func end
001C 0895 ret
001E .dbsym r i 20 c
001E .dbsym r x 16 c
001E .dbend
001E .dbfunc e Delay1ms _Delay1ms fV
001E ; n -> R20,R21
.even
001E _Delay1ms::
001E 0E940000 xcall push_gset1
0022 A801 movw R20,R16
0024 .dbline -1
0024 .dbline 14
0024 ; while(--i); //5 * i clock
0024 ; }
0024 ; void Delay1ms(uint16 n)
0024 ; {
0024 .dbline 15
0024 04C0 xjmp L13
0026 L10:
0026 .dbline 15
0026 .dbline 16
0026 0AE0 ldi R16,10
0028 EBDF xcall _Delay100us
002A .dbline 17
002A L11:
002A .dbline 15
002A 4150 subi R20,1
002C 5040 sbci R21,0
002E L13:
002E .dbline 15
002E ; for (;n!=0;n--){
002E 4030 cpi R20,0
0030 4507 cpc R20,R21
0032 C9F7 brne L10
0034 X0:
0034 .dbline -2
0034 L9:
0034 0E940000 xcall pop_gset1
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbsym r n 20 i
003A .dbend
003A .dbfunc e Delay1s _Delay1s fV
003A ; m -> R20,R21
.even
003A _Delay1s::
003A 0E940000 xcall push_gset1
003E A801 movw R20,R16
0040 .dbline -1
0040 .dbline 20
0040 ; Delay100us(10);
0040 ; }
0040 ; }
0040 ; void Delay1s(uint16 m) // m <= 6 ,when m==7, it is 1.
0040 ; {
0040 .dbline 21
0040 ; m=m*40;
0040 08E2 ldi R16,40
0042 10E0 ldi R17,0
0044 9A01 movw R18,R20
0046 0E940000 xcall empy16s
004A A801 movw R20,R16
004C .dbline 22
004C 04C0 xjmp L18
004E L15:
004E .dbline 22
004E .dbline 23
004E 0AEF ldi R16,250
0050 D7DF xcall _Delay100us
0052 .dbline 24
0052 L16:
0052 .dbline 22
0052 4150 subi R20,1
0054 5040 sbci R21,0
0056 L18:
0056 .dbline 22
0056 ; for (;m!=0;m--){
0056 4030 cpi R20,0
0058 4507 cpc R20,R21
005A C9F7 brne L15
005C X1:
005C .dbline -2
005C L14:
005C 0E940000 xcall pop_gset1
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r m 20 i
0062 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -