📄 mydelay.c
字号:
#include "mydelay.h"
void delay0ms5us(void)
{
/*精确延时0ms 5us ,晶振8MHz*/
/*us级精确延时 766us/晶振以内 延时=1+n*3 */
// CLI;//屏蔽中断吗?
asm("LDI R18,10");//1t ,寄存器R15~R30
asm("CLZ");//1t
asm("LOOP1:DEC R18");//1t
asm("BRNE LOOP1");//1t或2t//标志位Z是0就转移
asm("NOP");//1t
asm("NOP");//1t
// SEI;
/*us级精确延时 24543us以内,用nop补足了余数*/
//===精确延时 4.125us,晶振8MHz ===//
//===调用函数及返回花费0.875us==//
}
void delay0ms15us(void)
{
/*精确延时0ms 15us ,晶振8MHz*/
/*us级精确延时 766us/晶振以内 延时=1+n*3 */
// CLI;//屏蔽中断吗?
asm("LDI R18,37");//1t ,寄存器R15~R30
asm("CLZ");//1t
asm("LOOP111:DEC R18");//1t
asm("BRNE LOOP111");//1t或2t//标志位Z是0就转移
asm("NOP");//1t
// SEI;
/*us级精确延时 24543us以内,用nop补足了余数*/
//===精确延时 14.125us,晶振8MHz ===//
//===调用函数及返回花费0.875us==//
}
void delay0ms60us(void)
{
/*精确延时0ms 60us ,晶振8MHz*/
/*us级精确延时 766us/晶振以内 延时=1+n*3 */
// CLI;//屏蔽中断吗?
asm("LDI R18,157");//1t ,寄存器R15~R30
asm("CLZ");//1t
asm("LOOP11:DEC R18");//1t
asm("BRNE LOOP11");//1t或2t//标志位Z是0就转移
asm("NOP");//1t
// SEI;
/*us级精确延时 24543us以内,用nop补足了余数*/
//===精确延时 59.125us,晶振8MHz ===//
//===调用函数及返回花费0.875us==//
}
void delay0ms500us(void)
{
/*精确延时0ms 500us ,晶振8MHz*/
/*us级 196348us/晶振即196ms/晶振以内 延时=n*(m*3+5)*/
// CLI;//屏蔽中断吗?
asm("LDI R18,6");//外圈循环n
asm("LOOP32:LDI R19,220");//内圈循环m
asm("CLZ");//1t
asm("LOOP22:DEC R19");//1t
asm("BRNE LOOP22");
asm("CLZ");//1t
asm("DEC R18");//1t
asm("BRNE LOOP32");
asm("NOP");//1t
asm("NOP");//1t
asm("NOP");//1t
// SEI;
/*us级精确延时 24543us以内,用nop补足了余数*/
//===精确延时 499.125us,晶振8MHz ===//
//===调用函数及返回花费0.875us==//
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -