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

📄 delay.lis

📁 一个不错的DS1820的程序
💻 LIS
字号:
                        .module delay.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\delay.c
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 14
 0000           ; /**********************************
 0000           ; ** file_name delay.c             **
 0000           ; ** describe  软件延时函数        **
 0000           ; ** auther    古欣 www.avrvi.com  **
 0000           ; ** Time      2007-1-31           **
 0000           ; ***********************************/
 0000           ; #include "config.h"
 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 15
 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 24
 0004           ; }
 0004           ; 
 0004           ; /***********************
 0004           ; **8M时为 1000.25us
 0004           ; **4M时为 999.5us
 0004           ; **xtal 为晶振频率,单位为Mhz
 0004           ; ************************/
 0004           ; void delay_1ms(void)
 0004           ; {
 0004                   .dbline 26
 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 27
 000A           ;   ;
 000A           L4:
 000A                   .dbline 26
 000A 0150              subi R16,1
 000C 1040              sbci R17,0
 000E           L6:
 000E                   .dbline 26
 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 4A93              st -y,R20
 0018 5A93              st -y,R21
 001A                   .dbline -1
 001A                   .dbline 35
 001A           ; }
 001A           ; 
 001A           ; /***********************
 001A           ; ** 1S延时,误差可能稍大
 001A           ; ** 250ms*4=1000ms
 001A           ; ************************/
 001A           ; void delay_1s(void)
 001A           ; {
 001A                   .dbline 37
 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 38
 0020           ;    delay_1ms();
 0020 F1DF              xcall _delay_1ms
 0022           L9:
 0022                   .dbline 37
 0022 4150              subi R20,1
 0024 5040              sbci R21,0
 0026           L11:
 0026                   .dbline 37
 0026 4030              cpi R20,0
 0028 4507              cpc R20,R21
 002A D1F7              brne L8
 002C           X1:
 002C                   .dbline 39
 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 40
 0032           ;    delay_1ms();
 0032 E8DF              xcall _delay_1ms
 0034           L13:
 0034                   .dbline 39
 0034 4150              subi R20,1
 0036 5040              sbci R21,0
 0038           L15:
 0038                   .dbline 39
 0038 4030              cpi R20,0
 003A 4507              cpc R20,R21
 003C D1F7              brne L12
 003E           X2:
 003E                   .dbline 41
 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 42
 0044           ;    delay_1ms();
 0044 DFDF              xcall _delay_1ms
 0046           L17:
 0046                   .dbline 41
 0046 4150              subi R20,1
 0048 5040              sbci R21,0
 004A           L19:
 004A                   .dbline 41
 004A 4030              cpi R20,0
 004C 4507              cpc R20,R21
 004E D1F7              brne L16
 0050           X3:
 0050                   .dbline 43
 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 44
 0056           ;    delay_1ms();
 0056 D6DF              xcall _delay_1ms
 0058           L21:
 0058                   .dbline 43
 0058 4150              subi R20,1
 005A 5040              sbci R21,0
 005C           L23:
 005C                   .dbline 43
 005C 4030              cpi R20,0
 005E 4507              cpc R20,R21
 0060 D1F7              brne L20
 0062           X4:
 0062                   .dbline -2
 0062           L7:
 0062                   .dbline 0 ; func end
 0062 5991              ld R21,y+
 0064 4991              ld R20,y+
 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 -> R10,R11
                        .even
 0068           _delay_us::
 0068 0E940000          xcall push_xgset300C
 006C 5801              movw R10,R16
 006E                   .dbline -1
 006E                   .dbline 51
 006E           ; }
 006E           ; 
 006E           ; /***********************
 006E           ; **微秒级延时
 006E           ; ************************/
 006E           ; void delay_us(unsigned int n)
 006E           ; {
 006E                   .dbline 53
 006E           ;  unsigned int i;
 006E           ;  for(i=n;i>0;i--)
 006E A501              movw R20,R10
 0070 03C0              xjmp L28
 0072           L25:
 0072                   .dbline 54
 0072           ;  delay_1us();
 0072 C6DF              xcall _delay_1us
 0074           L26:
 0074                   .dbline 53
 0074 4150              subi R20,1
 0076 5040              sbci R21,0
 0078           L28:
 0078                   .dbline 53
 0078 4030              cpi R20,0
 007A 4507              cpc R20,R21
 007C D1F7              brne L25
 007E           X5:
 007E                   .dbline -2
 007E           L24:
 007E                   .dbline 0 ; func end
 007E 0C940000          xjmp pop_xgset300C
 0082                   .dbsym r i 20 i
 0082                   .dbsym r n 10 i
 0082                   .dbend
 0082                   .dbfunc e delay_ms _delay_ms fV
 0082           ;              i -> R20,R21
 0082           ;              n -> R10,R11
                        .even
 0082           _delay_ms::
 0082 0E940000          xcall push_xgset300C
 0086 5801              movw R10,R16
 0088                   .dbline -1
 0088                   .dbline 61
 0088           ; }
 0088           ; 
 0088           ; /***********************
 0088           ; **毫秒级延时
 0088           ; ************************/
 0088           ; void delay_ms(unsigned int n)
 0088           ; {
 0088                   .dbline 63
 0088           ;  unsigned int i;
 0088           ;  for(i=n;i>0;i--)
 0088 A501              movw R20,R10
 008A 03C0              xjmp L33
 008C           L30:
 008C                   .dbline 64
 008C           ;  delay_1ms();
 008C BBDF              xcall _delay_1ms
 008E           L31:
 008E                   .dbline 63
 008E 4150              subi R20,1
 0090 5040              sbci R21,0
 0092           L33:
 0092                   .dbline 63
 0092 4030              cpi R20,0
 0094 4507              cpc R20,R21
 0096 D1F7              brne L30
 0098           X6:
 0098                   .dbline -2
 0098           L29:
 0098                   .dbline 0 ; func end
 0098 0C940000          xjmp pop_xgset300C
 009C                   .dbsym r i 20 i
 009C                   .dbsym r n 10 i
 009C                   .dbend
 009C                   .dbfunc e delay_s _delay_s fV
 009C           ;              j -> R20,R21
 009C           ;              i -> R22,R23
 009C           ;              n -> R10,R11
                        .even
 009C           _delay_s::
 009C 0E940000          xcall push_xgsetF00C
 00A0 5801              movw R10,R16
 00A2                   .dbline -1
 00A2                   .dbline 71
 00A2           ; }
 00A2           ; 
 00A2           ; /***********************
 00A2           ; **秒级延时,太浪费资源,不建议使用
 00A2           ; ************************/
 00A2           ; void delay_s(unsigned int n)
 00A2           ; {
 00A2                   .dbline 73
 00A2           ;  unsigned int i,j;
 00A2           ;  for(j=n;j>0;j--)
 00A2 A501              movw R20,R10
 00A4 26C0              xjmp L38
 00A6           L35:
 00A6                   .dbline 74
 00A6           ;   {
 00A6                   .dbline 75
 00A6           ;    for(i=250;i>0;i--)   //250ms*4=1000ms
 00A6 6AEF              ldi R22,250
 00A8 70E0              ldi R23,0
 00AA 03C0              xjmp L42
 00AC           L39:
 00AC                   .dbline 76
 00AC           ;    delay_1ms();
 00AC ABDF              xcall _delay_1ms
 00AE           L40:
 00AE                   .dbline 75
 00AE 6150              subi R22,1
 00B0 7040              sbci R23,0
 00B2           L42:
 00B2                   .dbline 75
 00B2 6030              cpi R22,0
 00B4 6707              cpc R22,R23
 00B6 D1F7              brne L39
 00B8           X7:
 00B8                   .dbline 77
 00B8           ;    for(i=250;i>0;i--)
 00B8 6AEF              ldi R22,250
 00BA 70E0              ldi R23,0
 00BC 03C0              xjmp L46
 00BE           L43:
 00BE                   .dbline 78
 00BE           ;    delay_1ms();
 00BE A2DF              xcall _delay_1ms
 00C0           L44:
 00C0                   .dbline 77
 00C0 6150              subi R22,1
 00C2 7040              sbci R23,0
 00C4           L46:
 00C4                   .dbline 77
 00C4 6030              cpi R22,0
 00C6 6707              cpc R22,R23
 00C8 D1F7              brne L43
 00CA           X8:
 00CA                   .dbline 79
 00CA           ;    for(i=250;i>0;i--)
 00CA 6AEF              ldi R22,250
 00CC 70E0              ldi R23,0
 00CE 03C0              xjmp L50
 00D0           L47:
 00D0                   .dbline 80
 00D0           ;    delay_1ms();
 00D0 99DF              xcall _delay_1ms
 00D2           L48:
 00D2                   .dbline 79
 00D2 6150              subi R22,1
 00D4 7040              sbci R23,0
 00D6           L50:
 00D6                   .dbline 79
 00D6 6030              cpi R22,0
 00D8 6707              cpc R22,R23
 00DA D1F7              brne L47
 00DC           X9:
 00DC                   .dbline 81
 00DC           ;    for(i=250;i>0;i--)
 00DC 6AEF              ldi R22,250
 00DE 70E0              ldi R23,0
 00E0 03C0              xjmp L54
 00E2           L51:
 00E2                   .dbline 82
 00E2           ;    delay_1ms();
 00E2 90DF              xcall _delay_1ms
 00E4           L52:
 00E4                   .dbline 81
 00E4 6150              subi R22,1
 00E6 7040              sbci R23,0
 00E8           L54:
 00E8                   .dbline 81
 00E8 6030              cpi R22,0
 00EA 6707              cpc R22,R23
 00EC D1F7              brne L51
 00EE           X10:
 00EE                   .dbline 83
 00EE           ;   }
 00EE           L36:
 00EE                   .dbline 73
 00EE 4150              subi R20,1
 00F0 5040              sbci R21,0
 00F2           L38:
 00F2                   .dbline 73
 00F2 4030              cpi R20,0
 00F4 4507              cpc R20,R21
 00F6 B9F6              brne L35
 00F8           X11:
 00F8                   .dbline -2
 00F8           L34:
 00F8                   .dbline 0 ; func end
 00F8 0C940000          xjmp pop_xgsetF00C
 00FC                   .dbsym r j 20 i
 00FC                   .dbsym r i 22 i
 00FC                   .dbsym r n 10 i
 00FC                   .dbend
 00FC           ; }

⌨️ 快捷键说明

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