⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delay.lis

📁 avr 单片机twi源程序 功能:实现TWI主从机通讯.
💻 LIS
字号:
                        .module delay.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\2007电子设计\古欣\twitest\lib\delay.c
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; #include "config.h"
 0000           ; 
 0000           ; /***********************
 0000           ; ** 8M晶振下 1us
 0000           ; ** 也可以宏定义 8个asm("nop");
 0000           ; ** #define delay_1us asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");
 0000           ; ***********************/
 0000           ; void delay_1us(void)
 0000           ; {
 0000                   .dbline 10
 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_1ms _delay_1ms fV
 0004           ;              i -> R16,R17
                        .even
 0004           _delay_1ms::
 0004                   .dbline -1
 0004                   .dbline 19
 0004           ; }
 0004           ; 
 0004           ; /***********************
 0004           ; **8M时为 1000.25us
 0004           ; **4M时为 999.5us
 0004           ; **xtal 为晶振频率,单位为Mhz
 0004           ; ************************/
 0004           ; void delay_1ms(void)
 0004           ; {
 0004                   .dbline 21
 0004           ;  unsigned int i;
 0004           ;  for(i=(xtal*143-2);i>0;i--)
 0004 06E7              ldi R16,1142
 0006 14E0              ldi R17,4
 0008 02C0              xjmp L6
 000A           L3:
 000A                   .dbline 22
 000A           L4:
 000A                   .dbline 21
 000A 0150              subi R16,1
 000C 1040              sbci R17,0
 000E           L6:
 000E                   .dbline 21
 000E 0030              cpi R16,0
 0010 0107              cpc R16,R17
 0012 D9F7              brne L3
 0014           X0:
 0014                   .dbline -2
 0014           L2:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbsym r i 16 i
 0016                   .dbend
 0016                   .dbfunc e delay_1s _delay_1s fV
 0016           ;              i -> R20,R21
                        .even
 0016           _delay_1s::
 0016 0E940000          xcall push_gset1
 001A                   .dbline -1
 001A                   .dbline 30
 001A           ;   ;
 001A           ; }
 001A           ; 
 001A           ; /***********************
 001A           ; ** 1S延时,误差可能稍大
 001A           ; ** 250ms*4=1000ms
 001A           ; ************************/
 001A           ; void delay_1s(void)
 001A           ; {
 001A                   .dbline 32
 001A           ;  unsigned int i;
 001A           ;    for(i=250;i>0;i--)   //250ms*4=1000ms
 001A 4AEF              ldi R20,250
 001C 50E0              ldi R21,0
 001E 03C0              xjmp L11
 0020           L8:
 0020                   .dbline 33
 0020 F1DF              xcall _delay_1ms
 0022           L9:
 0022                   .dbline 32
 0022 4150              subi R20,1
 0024 5040              sbci R21,0
 0026           L11:
 0026                   .dbline 32
 0026 4030              cpi R20,0
 0028 4507              cpc R20,R21
 002A D1F7              brne L8
 002C           X1:
 002C                   .dbline 34
 002C           ;    delay_1ms();
 002C           ;    for(i=250;i>0;i--)
 002C 4AEF              ldi R20,250
 002E 50E0              ldi R21,0
 0030 03C0              xjmp L15
 0032           L12:
 0032                   .dbline 35
 0032 E8DF              xcall _delay_1ms
 0034           L13:
 0034                   .dbline 34
 0034 4150              subi R20,1
 0036 5040              sbci R21,0
 0038           L15:
 0038                   .dbline 34
 0038 4030              cpi R20,0
 003A 4507              cpc R20,R21
 003C D1F7              brne L12
 003E           X2:
 003E                   .dbline 36
 003E           ;    delay_1ms();
 003E           ;    for(i=250;i>0;i--)
 003E 4AEF              ldi R20,250
 0040 50E0              ldi R21,0
 0042 03C0              xjmp L19
 0044           L16:
 0044                   .dbline 37
 0044 DFDF              xcall _delay_1ms
 0046           L17:
 0046                   .dbline 36
 0046 4150              subi R20,1
 0048 5040              sbci R21,0
 004A           L19:
 004A                   .dbline 36
 004A 4030              cpi R20,0
 004C 4507              cpc R20,R21
 004E D1F7              brne L16
 0050           X3:
 0050                   .dbline 38
 0050           ;    delay_1ms();
 0050           ;    for(i=250;i>0;i--)
 0050 4AEF              ldi R20,250
 0052 50E0              ldi R21,0
 0054 03C0              xjmp L23
 0056           L20:
 0056                   .dbline 39
 0056 D6DF              xcall _delay_1ms
 0058           L21:
 0058                   .dbline 38
 0058 4150              subi R20,1
 005A 5040              sbci R21,0
 005C           L23:
 005C                   .dbline 38
 005C 4030              cpi R20,0
 005E 4507              cpc R20,R21
 0060 D1F7              brne L20
 0062           X4:
 0062                   .dbline -2
 0062           L7:
 0062 0E940000          xcall pop_gset1
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbsym r i 20 i
 0068                   .dbend
 0068                   .dbfunc e delay_us _delay_us fV
 0068           ;              i -> R20,R21
 0068           ;              n -> R22,R23
                        .even
 0068           _delay_us::
 0068 0E940000          xcall push_gset2
 006C B801              movw R22,R16
 006E                   .dbline -1
 006E                   .dbline 46
 006E           ;    delay_1ms();
 006E           ; }
 006E           ; 
 006E           ; /***********************
 006E           ; **微秒级延时
 006E           ; ************************/
 006E           ; void delay_us(unsigned int n)
 006E           ; {
 006E                   .dbline 48
 006E           ;  unsigned int i;
 006E           ;  for(i=n;i>0;i--)
 006E AB01              movw R20,R22
 0070 03C0              xjmp L28
 0072           L25:
 0072                   .dbline 49
 0072 C6DF              xcall _delay_1us
 0074           L26:
 0074                   .dbline 48
 0074 4150              subi R20,1
 0076 5040              sbci R21,0
 0078           L28:
 0078                   .dbline 48
 0078 4030              cpi R20,0
 007A 4507              cpc R20,R21
 007C D1F7              brne L25
 007E           X5:
 007E                   .dbline -2
 007E           L24:
 007E 0E940000          xcall pop_gset2
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbsym r i 20 i
 0084                   .dbsym r n 22 i
 0084                   .dbend
 0084                   .dbfunc e delay_ms _delay_ms fV
 0084           ;              i -> R20,R21
 0084           ;              n -> R22,R23
                        .even
 0084           _delay_ms::
 0084 0E940000          xcall push_gset2
 0088 B801              movw R22,R16
 008A                   .dbline -1
 008A                   .dbline 56
 008A           ;  delay_1us();
 008A           ; }
 008A           ; 
 008A           ; /***********************
 008A           ; **毫秒级延时
 008A           ; ************************/
 008A           ; void delay_ms(unsigned int n)
 008A           ; {
 008A                   .dbline 58
 008A           ;  unsigned int i;
 008A           ;  for(i=n;i>0;i--)
 008A AB01              movw R20,R22
 008C 03C0              xjmp L33
 008E           L30:
 008E                   .dbline 59
 008E BADF              xcall _delay_1ms
 0090           L31:
 0090                   .dbline 58
 0090 4150              subi R20,1
 0092 5040              sbci R21,0
 0094           L33:
 0094                   .dbline 58
 0094 4030              cpi R20,0
 0096 4507              cpc R20,R21
 0098 D1F7              brne L30
 009A           X6:
 009A                   .dbline -2
 009A           L29:
 009A 0E940000          xcall pop_gset2
 009E                   .dbline 0 ; func end
 009E 0895              ret
 00A0                   .dbsym r i 20 i
 00A0                   .dbsym r n 22 i
 00A0                   .dbend
 00A0                   .dbfunc e delay_s _delay_s fV
 00A0           ;              j -> R20,R21
 00A0           ;              i -> R22,R23
 00A0           ;              n -> R22,R23
                        .even
 00A0           _delay_s::
 00A0 0E940000          xcall push_gset2
 00A4 B801              movw R22,R16
 00A6                   .dbline -1
 00A6                   .dbline 66
 00A6           ;  delay_1ms();
 00A6           ; }
 00A6           ; 
 00A6           ; /***********************
 00A6           ; **秒级延时,太浪费资源,不建议使用
 00A6           ; ************************/
 00A6           ; void delay_s(unsigned int n)
 00A6           ; {
 00A6                   .dbline 68
 00A6           ;  unsigned int i,j;
 00A6           ;  for(j=n;j>0;j--)
 00A6 AB01              movw R20,R22
 00A8 26C0              xjmp L38
 00AA           L35:
 00AA                   .dbline 69
 00AA           ;   {
 00AA                   .dbline 70
 00AA           ;    for(i=250;i>0;i--)   //250ms*4=1000ms
 00AA 6AEF              ldi R22,250
 00AC 70E0              ldi R23,0
 00AE 03C0              xjmp L42
 00B0           L39:
 00B0                   .dbline 71
 00B0 A9DF              xcall _delay_1ms
 00B2           L40:
 00B2                   .dbline 70
 00B2 6150              subi R22,1
 00B4 7040              sbci R23,0
 00B6           L42:
 00B6                   .dbline 70
 00B6 6030              cpi R22,0
 00B8 6707              cpc R22,R23
 00BA D1F7              brne L39
 00BC           X7:
 00BC                   .dbline 72
 00BC           ;    delay_1ms();
 00BC           ;    for(i=250;i>0;i--)
 00BC 6AEF              ldi R22,250
 00BE 70E0              ldi R23,0
 00C0 03C0              xjmp L46
 00C2           L43:
 00C2                   .dbline 73
 00C2 A0DF              xcall _delay_1ms
 00C4           L44:
 00C4                   .dbline 72
 00C4 6150              subi R22,1
 00C6 7040              sbci R23,0
 00C8           L46:
 00C8                   .dbline 72
 00C8 6030              cpi R22,0
 00CA 6707              cpc R22,R23
 00CC D1F7              brne L43
 00CE           X8:
 00CE                   .dbline 74
 00CE           ;    delay_1ms();
 00CE           ;    for(i=250;i>0;i--)
 00CE 6AEF              ldi R22,250
 00D0 70E0              ldi R23,0
 00D2 03C0              xjmp L50
 00D4           L47:
 00D4                   .dbline 75
 00D4 97DF              xcall _delay_1ms
 00D6           L48:
 00D6                   .dbline 74
 00D6 6150              subi R22,1
 00D8 7040              sbci R23,0
 00DA           L50:
 00DA                   .dbline 74
 00DA 6030              cpi R22,0
 00DC 6707              cpc R22,R23
 00DE D1F7              brne L47
 00E0           X9:
 00E0                   .dbline 76
 00E0           ;    delay_1ms();
 00E0           ;    for(i=250;i>0;i--)
 00E0 6AEF              ldi R22,250
 00E2 70E0              ldi R23,0
 00E4 03C0              xjmp L54
 00E6           L51:
 00E6                   .dbline 77
 00E6 8EDF              xcall _delay_1ms
 00E8           L52:
 00E8                   .dbline 76
 00E8 6150              subi R22,1
 00EA 7040              sbci R23,0
 00EC           L54:
 00EC                   .dbline 76
 00EC 6030              cpi R22,0
 00EE 6707              cpc R22,R23
 00F0 D1F7              brne L51
 00F2           X10:
 00F2                   .dbline 78
 00F2           L36:
 00F2                   .dbline 68
 00F2 4150              subi R20,1
 00F4 5040              sbci R21,0
 00F6           L38:
 00F6                   .dbline 68
 00F6 4030              cpi R20,0
 00F8 4507              cpc R20,R21
 00FA B9F6              brne L35
 00FC           X11:
 00FC                   .dbline -2
 00FC           L34:
 00FC 0E940000          xcall pop_gset2
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbsym r j 20 i
 0102                   .dbsym r i 22 i
 0102                   .dbsym r n 22 i
 0102                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -