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