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

📄 delay.s

📁 uIP是免费的TCP/IP协议栈,我们将它移植到我们的AVR以太网开发板中
💻 S
字号:
	.module delay.c
	.area text(rom, con, rel)
	.dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\AVRuIP\delay.c
	.dbfunc e delay_ms _delay_ms fV
;    delay_count -> R10,R11
;      delay_cnt -> R10,R11
; delay_cnt_buffer -> R12,R13
;             ms -> R16
	.even
_delay_ms::
	xcall push_gset4x
	.dbline -1
	.dbline 5
; #include "delay.h"
; 
; 
; void delay_ms(unsigned char ms)
; {
	.dbline 6
;    unsigned short delay_count = F_CPU / 4000;
	.dbline 20
; #ifdef __GNUC__
;     unsigned short cnt;
;     asm volatile ("\n"
;                   "L_dl1%=:\n\t"
;                   "mov %A0, %A2\n\t"
;                   "mov %B0, %B2\n"
;                   "L_dl2%=:\n\t"
;                   "sbiw %A0, 1\n\t"
;                   "brne L_dl2%=\n\t"
;                   "dec %1\n\t" "brne L_dl1%=\n\t":"=&w" (cnt)
;                   :"r"(ms), "r"((unsigned short) (delay_count))
;         );
; #else
;     unsigned short delay_cnt = F_CPU/6000;
	ldi R24,2000
	ldi R25,7
	movw R10,R24
	xjmp L3
L2:
	.dbline 24
;     //unsigned short delay_cnt = 2400;   //*KU* for 14.745600 MHz Clock
;     unsigned short delay_cnt_buffer;
; 
;     while (ms--) {
	.dbline 25
;         delay_cnt_buffer = delay_cnt;
	movw R12,R10
L5:
	.dbline 26
L6:
	.dbline 26
	movw R2,R12
	movw R24,R2
	sbiw R24,1
	movw R12,R24
	tst R2
	brne L5
	tst R3
	brne L5
X0:
	.dbline 27
L3:
	.dbline 24
	mov R2,R16
	clr R3
	subi R16,1
	tst R2
	brne L2
	.dbline -2
L1:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r delay_count 10 s
	.dbsym r delay_cnt 10 s
	.dbsym r delay_cnt_buffer 12 s
	.dbsym r ms 16 c
	.dbend

⌨️ 快捷键说明

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