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

📄 delay.s

📁 avr_comp模拟比较器
💻 S
字号:
	.module delay.c
	.area text(rom, con, rel)
	.dbfile D:\桌面\avr程序设计\模拟比较器\delay.c
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 14
; /****************************
; ** file_name delay.c       **
; ** describe  软件延时函数  **
; ** auther    古欣          **
; ** Time      2007-1-31     **
; *****************************/
; #include "delay.h"
; /***********************
; ** 8M晶振下 1us
; ** 也可以宏定义 8个asm("nop");
; ** #define delay_1us asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");
; ***********************/
; void delay_1us(void)
; {
	.dbline 15
;  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 24
; }
; 
; /***********************
; **8M时为 1000.25us
; **4M时为 999.5us
; **xtal 为晶振频率,单位为Mhz
; ************************/
; void delay_1ms(void)
; {
	.dbline 26
;  unsigned int i;
;  for(i=(xtal*143-2);i>0;i--)
	ldi R16,1142
	ldi R17,4
	xjmp L6
L3:
	.dbline 27
L4:
	.dbline 26
	subi R16,1
	sbci R17,0
L6:
	.dbline 26
	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 35
;   ;
; }
; 
; /***********************
; ** 1S延时,误差可能稍大
; ** 250ms*4=1000ms
; ************************/
; void delay_1s(void)
; {
	.dbline 37
;  unsigned int i;
;    for(i=250;i>0;i--)   //250ms*4=1000ms
	ldi R20,250
	ldi R21,0
	xjmp L11
L8:
	.dbline 38
	xcall _delay_1ms
L9:
	.dbline 37
	subi R20,1
	sbci R21,0
L11:
	.dbline 37
	cpi R20,0
	cpc R20,R21
	brne L8
X1:
	.dbline 39
;    delay_1ms();
;    for(i=250;i>0;i--)
	ldi R20,250
	ldi R21,0
	xjmp L15
L12:
	.dbline 40
	xcall _delay_1ms
L13:
	.dbline 39
	subi R20,1
	sbci R21,0
L15:
	.dbline 39
	cpi R20,0
	cpc R20,R21
	brne L12
X2:
	.dbline 41
;    delay_1ms();
;    for(i=250;i>0;i--)
	ldi R20,250
	ldi R21,0
	xjmp L19
L16:
	.dbline 42
	xcall _delay_1ms
L17:
	.dbline 41
	subi R20,1
	sbci R21,0
L19:
	.dbline 41
	cpi R20,0
	cpc R20,R21
	brne L16
X3:
	.dbline 43
;    delay_1ms();
;    for(i=250;i>0;i--)
	ldi R20,250
	ldi R21,0
	xjmp L23
L20:
	.dbline 44
	xcall _delay_1ms
L21:
	.dbline 43
	subi R20,1
	sbci R21,0
L23:
	.dbline 43
	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 51
;    delay_1ms();
; }
; 
; /***********************
; **微秒级延时
; ************************/
; void delay_us(unsigned int n)
; {
	.dbline 53
;  unsigned int i;
;  for(i=n;i>0;i--)
	movw R20,R22
	xjmp L28
L25:
	.dbline 54
	xcall _delay_1us
L26:
	.dbline 53
	subi R20,1
	sbci R21,0
L28:
	.dbline 53
	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 61
;  delay_1us();
; }
; 
; /***********************
; **毫秒级延时
; ************************/
; void delay_ms(unsigned int n)
; {
	.dbline 63
;  unsigned int i;
;  for(i=n;i>0;i--)
	movw R20,R22
	xjmp L33
L30:
	.dbline 64
	xcall _delay_1ms
L31:
	.dbline 63
	subi R20,1
	sbci R21,0
L33:
	.dbline 63
	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 71
;  delay_1ms();
; }
; 
; /***********************
; **秒级延时,太浪费资源,不建议使用
; ************************/
; void delay_s(unsigned int n)
; {
	.dbline 73
;  unsigned int i,j;
;  for(j=n;j>0;j--)
	movw R20,R22
	xjmp L38
L35:
	.dbline 74
;   {
	.dbline 75
;    for(i=250;i>0;i--)   //250ms*4=1000ms
	ldi R22,250
	ldi R23,0
	xjmp L42
L39:
	.dbline 76
	xcall _delay_1ms
L40:
	.dbline 75
	subi R22,1
	sbci R23,0
L42:
	.dbline 75
	cpi R22,0
	cpc R22,R23
	brne L39
X7:
	.dbline 77
;    delay_1ms();
;    for(i=250;i>0;i--)
	ldi R22,250
	ldi R23,0
	xjmp L46
L43:
	.dbline 78
	xcall _delay_1ms
L44:
	.dbline 77
	subi R22,1
	sbci R23,0
L46:
	.dbline 77
	cpi R22,0
	cpc R22,R23
	brne L43
X8:
	.dbline 79
;    delay_1ms();
;    for(i=250;i>0;i--)
	ldi R22,250
	ldi R23,0
	xjmp L50
L47:
	.dbline 80
	xcall _delay_1ms
L48:
	.dbline 79
	subi R22,1
	sbci R23,0
L50:
	.dbline 79
	cpi R22,0
	cpc R22,R23
	brne L47
X9:
	.dbline 81
;    delay_1ms();
;    for(i=250;i>0;i--)
	ldi R22,250
	ldi R23,0
	xjmp L54
L51:
	.dbline 82
	xcall _delay_1ms
L52:
	.dbline 81
	subi R22,1
	sbci R23,0
L54:
	.dbline 81
	cpi R22,0
	cpc R22,R23
	brne L51
X10:
	.dbline 83
L36:
	.dbline 73
	subi R20,1
	sbci R21,0
L38:
	.dbline 73
	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 + -