📄 delay.s
字号:
.module delay.c
.area text(rom, con, rel)
.dbfile F:\单片机源程序\AVR单片机程序\MAGE16\LED\delay.c
.dbfunc e delay_1us _delay_1us fV
.even
_delay_1us::
.dbline -1
.dbline 5
;
; #include "config.h"
;
; void delay_1us(void)
; {
.dbline 6
; asm("nop");
nop
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 10
; }
;
; void delay_1ms(void)
; {
.dbline 12
ldi R16,1142
ldi R17,4
xjmp L6
L3:
.dbline 12
L4:
.dbline 12
subi R16,1
sbci R17,0
L6:
.dbline 12
; unsigned int i;
; for(i=(xtal*143-2);i>0;i--);
cpi R16,0
cpc R16,R17
brne L3
X0:
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_1s _delay_1s fV
; i -> R20,R21
.even
_delay_1s::
xcall push_gset1
.dbline -1
.dbline 20
; }
;
; /***********************
; ** 1S延时,误差可能稍大
; ** 250ms*4=1000ms
; ************************/
; void delay_1s(void)
; {
.dbline 22
; unsigned int i;
; for(i=250;i>0;i--) //250ms*4=1000ms
ldi R20,250
ldi R21,0
xjmp L11
L8:
.dbline 23
xcall _delay_1ms
L9:
.dbline 22
subi R20,1
sbci R21,0
L11:
.dbline 22
cpi R20,0
cpc R20,R21
brne L8
X1:
.dbline 24
; delay_1ms();
; for(i=250;i>0;i--)
ldi R20,250
ldi R21,0
xjmp L15
L12:
.dbline 25
xcall _delay_1ms
L13:
.dbline 24
subi R20,1
sbci R21,0
L15:
.dbline 24
cpi R20,0
cpc R20,R21
brne L12
X2:
.dbline 26
; delay_1ms();
; for(i=250;i>0;i--)
ldi R20,250
ldi R21,0
xjmp L19
L16:
.dbline 27
xcall _delay_1ms
L17:
.dbline 26
subi R20,1
sbci R21,0
L19:
.dbline 26
cpi R20,0
cpc R20,R21
brne L16
X3:
.dbline 28
; delay_1ms();
; for(i=250;i>0;i--)
ldi R20,250
ldi R21,0
xjmp L23
L20:
.dbline 29
xcall _delay_1ms
L21:
.dbline 28
subi R20,1
sbci R21,0
L23:
.dbline 28
cpi R20,0
cpc R20,R21
brne L20
X4:
.dbline -2
L7:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e delay_us _delay_us fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_us::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 36
; delay_1ms();
; }
;
; /***********************
; **微秒级延时
; ************************/
; void delay_us(unsigned int n)
; {
.dbline 38
; unsigned int i;
; for(i=n;i>0;i--)
movw R20,R22
xjmp L28
L25:
.dbline 39
xcall _delay_1us
L26:
.dbline 38
subi R20,1
sbci R21,0
L28:
.dbline 38
cpi R20,0
cpc R20,R21
brne L25
X5:
.dbline -2
L24:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e delay_ms _delay_ms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_ms::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 46
; delay_1us();
; }
;
; /***********************
; **毫秒级延时
; ************************/
; void delay_ms(unsigned int n)
; {
.dbline 48
; unsigned int i;
; for(i=n;i>0;i--)
movw R20,R22
xjmp L33
L30:
.dbline 49
xcall _delay_1ms
L31:
.dbline 48
subi R20,1
sbci R21,0
L33:
.dbline 48
cpi R20,0
cpc R20,R21
brne L30
X6:
.dbline -2
L29:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e delay_s _delay_s fV
; j -> R20,R21
; i -> R22,R23
; n -> R22,R23
.even
_delay_s::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 56
; delay_1ms();
; }
;
; /***********************
; **秒级延时,太浪费资源,不建议使用
; ************************/
; void delay_s(unsigned int n)
; {
.dbline 58
; unsigned int i,j;
; for(j=n;j>0;j--)
movw R20,R22
xjmp L38
L35:
.dbline 59
; {
.dbline 60
; for(i=250;i>0;i--) //250ms*4=1000ms
ldi R22,250
ldi R23,0
xjmp L42
L39:
.dbline 61
xcall _delay_1ms
L40:
.dbline 60
subi R22,1
sbci R23,0
L42:
.dbline 60
cpi R22,0
cpc R22,R23
brne L39
X7:
.dbline 62
; delay_1ms();
; for(i=250;i>0;i--)
ldi R22,250
ldi R23,0
xjmp L46
L43:
.dbline 63
xcall _delay_1ms
L44:
.dbline 62
subi R22,1
sbci R23,0
L46:
.dbline 62
cpi R22,0
cpc R22,R23
brne L43
X8:
.dbline 64
; delay_1ms();
; for(i=250;i>0;i--)
ldi R22,250
ldi R23,0
xjmp L50
L47:
.dbline 65
xcall _delay_1ms
L48:
.dbline 64
subi R22,1
sbci R23,0
L50:
.dbline 64
cpi R22,0
cpc R22,R23
brne L47
X9:
.dbline 66
; delay_1ms();
; for(i=250;i>0;i--)
ldi R22,250
ldi R23,0
xjmp L54
L51:
.dbline 67
xcall _delay_1ms
L52:
.dbline 66
subi R22,1
sbci R23,0
L54:
.dbline 66
cpi R22,0
cpc R22,R23
brne L51
X10:
.dbline 68
L36:
.dbline 58
subi R20,1
sbci R21,0
L38:
.dbline 58
cpi R20,0
cpc R20,R21
brne L35
X11:
.dbline -2
L34:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 i
.dbsym r i 22 i
.dbsym r n 22 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -