📄 delay.s
字号:
.module delay.c
.area text(rom, con, rel)
.dbfile F:\CH452L\delay.c
.dbfunc e Delay_Nus _Delay_Nus fV
; i -> R20,R21
; time -> R16,R17
.even
_Delay_Nus::
rcall push_gset1
.dbline -1
.dbline 13
; #include<iom8v.h>
; #include<macros.h>
;
; #define xtal 8 //定义时钟频率8M
;
; /************************************************************
; * 函数名称:void Delay_Nus(unsigned int time)
; * 功 能:软件延时N微秒
; * 入口参数:time 延时时间
; * 出口参数:无
; ************************************************************/
; void Delay_Nus(unsigned int time)
; {
.dbline 15
; unsigned int i;
; for(i=0;i<time;i++)
clr R20
clr R21
rjmp L5
L2:
.dbline 16
.dbline 17
nop
.dbline 18
L3:
.dbline 15
subi R20,255 ; offset = 1
sbci R21,255
L5:
.dbline 15
cp R20,R16
cpc R21,R17
brlo L2
.dbline -2
L1:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r time 16 i
.dbend
.dbfunc e Delay_Nms _Delay_Nms fV
; i -> R20,R21
; time -> R16,R17
.even
_Delay_Nms::
rcall push_gset1
.dbline -1
.dbline 28
; {
; asm("nop");
; }
; }
;
; /************************************************************
; * 函数名称:void Delay_Nms(unsigned int time)
; * 功 能:软件延时N毫秒
; * 入口参数:time 延时时间 MS
; * 出口参数:无
; ************************************************************/
; void Delay_Nms(unsigned int time)
; {
rjmp L8
L7:
.dbline 31
; unsigned int i;
; while(time--)
; {
.dbline 32
; for(i=1;i<(unsigned int)(xtal*143-2);i++)
ldi R20,1
ldi R21,0
rjmp L13
L10:
.dbline 33
L11:
.dbline 32
subi R20,255 ; offset = 1
sbci R21,255
L13:
.dbline 32
cpi R20,118
ldi R30,4
cpc R21,R30
brlo L10
.dbline 34
L8:
.dbline 30
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L7
tst R3
brne L7
X0:
.dbline -2
L6:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r time 16 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -