?? delay.lis
字號:
.module delay.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\自動充電小車\自動充電小車\298\delay.c
0000 .dbfunc e delay_1us _delay_1us fV
0000 ; i -> R16,R17
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 6
0000 ; #define _DELAY_C_
0000 ; #include "DELAY.H" //用戶自己定義的頭文件
0000 ;
0000 ; //1us延時函數
0000 ; void delay_1us( void )
0000 ; {
0000 .dbline 7
0000 ; uint i = 1;
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 01C0 xjmp L3
0006 L2:
0006 .dbline 9
0006 ; while( i-- )
0006 ; {
0006 .dbline 10
0006 ; asm("nop");
0006 0000 nop
0008 .dbline 11
0008 ; }
0008 L3:
0008 .dbline 8
0008 1801 movw R2,R16
000A 0150 subi R16,1
000C 1040 sbci R17,0
000E 2220 tst R2
0010 D1F7 brne L2
0012 3320 tst R3
0014 C1F7 brne L2
0016 X0:
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbsym r i 16 i
0018 .dbend
0018 .dbfunc e delay_nus _delay_nus fV
0018 ; i -> R20,R21
0018 ; n -> R10,R11
.even
0018 _delay_nus::
0018 0E940000 xcall push_xgset300C
001C 5801 movw R10,R16
001E .dbline -1
001E .dbline 16
001E ; }
001E ;
001E ; //nus延時函數
001E ; void delay_nus( uint n )
001E ; {
001E .dbline 17
001E ; uint i = 0;
001E 4427 clr R20
0020 5527 clr R21
0022 .dbline 18
0022 ; for (i = 0; i < n; i++)
0022 03C0 xjmp L9
0024 L6:
0024 .dbline 19
0024 ; delay_1us();
0024 EDDF xcall _delay_1us
0026 L7:
0026 .dbline 18
0026 4F5F subi R20,255 ; offset = 1
0028 5F4F sbci R21,255
002A L9:
002A .dbline 18
002A 4A15 cp R20,R10
002C 5B05 cpc R21,R11
002E D0F3 brlo L6
0030 X1:
0030 .dbline -2
0030 L5:
0030 .dbline 0 ; func end
0030 0C940000 xjmp pop_xgset300C
0034 .dbsym r i 20 i
0034 .dbsym r n 10 i
0034 .dbend
0034 .dbfunc e delay_1ms _delay_1ms fV
0034 ; i -> R16,R17
.even
0034 _delay_1ms::
0034 .dbline -1
0034 .dbline 24
0034 ; }
0034 ;
0034 ; //1ms延時函數
0034 ; void delay_1ms( void )
0034 ; {
0034 .dbline 26
0034 ; uint i;
0034 ; for (i = 0; i < 1140; i++)
0034 0027 clr R16
0036 1127 clr R17
0038 02C0 xjmp L14
003A L11:
003A .dbline 27
003A ; {;}
003A .dbline 27
003A .dbline 27
003A L12:
003A .dbline 26
003A 0F5F subi R16,255 ; offset = 1
003C 1F4F sbci R17,255
003E L14:
003E .dbline 26
003E 0437 cpi R16,116
0040 E4E0 ldi R30,4
0042 1E07 cpc R17,R30
0044 D0F3 brlo L11
0046 X2:
0046 .dbline -2
0046 L10:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbsym r i 16 i
0048 .dbend
0048 .dbfunc e delay_nms _delay_nms fV
0048 ; i -> R20,R21
0048 ; n -> R10,R11
.even
0048 _delay_nms::
0048 0E940000 xcall push_xgset300C
004C 5801 movw R10,R16
004E .dbline -1
004E .dbline 32
004E ; }
004E ;
004E ; //nms延時函數
004E ; void delay_nms( uint n )
004E ; {
004E .dbline 33
004E ; uint i = 0;
004E 4427 clr R20
0050 5527 clr R21
0052 .dbline 34
0052 ; for (i = 0; i < n; i++)
0052 03C0 xjmp L19
0054 L16:
0054 .dbline 35
0054 ; delay_1ms();
0054 EFDF xcall _delay_1ms
0056 L17:
0056 .dbline 34
0056 4F5F subi R20,255 ; offset = 1
0058 5F4F sbci R21,255
005A L19:
005A .dbline 34
005A 4A15 cp R20,R10
005C 5B05 cpc R21,R11
005E D0F3 brlo L16
0060 X3:
0060 .dbline -2
0060 L15:
0060 .dbline 0 ; func end
0060 0C940000 xjmp pop_xgset300C
0064 .dbsym r i 20 i
0064 .dbsym r n 10 i
0064 .dbend
0064 .dbfunc e delay_ns _delay_ns fV
0064 ; i -> R10
0064 ; n -> R12
.even
0064 _delay_ns::
0064 AA92 st -y,R10
0066 CA92 st -y,R12
0068 C02E mov R12,R16
006A .dbline -1
006A .dbline 40
006A ; }
006A ;
006A ; //延時1S
006A ; void delay_ns( uchar n )
006A ; {
006A .dbline 42
006A ; uchar i;
006A ; for( i = 0; i < n; i++ )
006A AA24 clr R10
006C 04C0 xjmp L24
006E L21:
006E .dbline 43
006E ; {
006E .dbline 44
006E ; delay_nms( 1000 );
006E 08EE ldi R16,1000
0070 13E0 ldi R17,3
0072 EADF xcall _delay_nms
0074 .dbline 45
0074 ; }
0074 L22:
0074 .dbline 42
0074 A394 inc R10
0076 L24:
0076 .dbline 42
0076 AC14 cp R10,R12
0078 D0F3 brlo L21
007A X4:
007A .dbline -2
007A L20:
007A .dbline 0 ; func end
007A C990 ld R12,y+
007C A990 ld R10,y+
007E 0895 ret
0080 .dbsym r i 10 c
0080 .dbsym r n 12 c
0080 .dbend
0080 ; }
0080 ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -