📄 mydelay.s
字号:
.module mydelay.c
.area text(rom, con, rel)
.dbfile ..\..\..\..\PROTEU~2\5.avr\19.温度测量ds18b20\2.精确延时函数\mydelay.c
.dbfile D:\教程及心得\Proteus\PROTEU~2\5.avr\19.温度测量ds18b20\2.精确延时函数\mydelay.c
.dbfunc e delay0ms900us _delay0ms900us fV
.even
_delay0ms900us::
.dbline -1
.dbline 3
; #include "mydelay.h"
; void delay0ms900us(void)
; {
.dbline 7
; /*精确延时0ms 900us ,晶振1MHz*/
; /*us级 196348us/晶振即196ms/晶振以内 延时=n*(m*3+5)*/
; // CLI;//屏蔽中断吗?
; asm("LDI R18,2");//外圈循环n
LDI R18,2
.dbline 8
; asm("LOOP3:LDI R19,147");//内圈循环m
LOOP3:LDI R19,147
.dbline 9
; asm("CLZ");//1t
CLZ
.dbline 10
; asm("LOOP2:DEC R19");//1t
LOOP2:DEC R19
.dbline 11
; asm("BRNE LOOP2");
BRNE LOOP2
.dbline 12
; asm("CLZ");//1t
CLZ
.dbline 13
; asm("DEC R18");//1t
DEC R18
.dbline 14
; asm("BRNE LOOP3");
BRNE LOOP3
.dbline 15
; asm("NOP");//1t
NOP
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
; // SEI;
; /*us级精确延时 196348us以内,用nop补足了余数*/
; //===精确延时 893us,晶振1MHz ===//
; //===调用函数及返回花费7us==//
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -