📄 delay.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 + -