AVRstudio/***Author:ly*ForAVRmega8-bit*/#include<avr/>charii=0;/************************************延时Nus函数n=10:实际8us(8M)MEGA8:8M时:(n=1);1M时:实际延时17us(n=1)MEGA48:8M:n=;(n=1)1M:(n=1)*************************************/voiddelay_nus(unsignedintn){ //unsignedinti; asm("nop");//千万不可省略,或改成ii=8;(ii为全局变量,随便赋值给全局变量) while(--n>1); //for(i=1;i<n;i++);}/*********************************************延时1ms函数MEGA8:8M:(i<1656);1M:(i<198)MEGA48:8M:(i<1590)1M:延时998us(i<197)}**********************************************/voiddelay_1ms(void){ unsignedinti; for(i=0;i<198;i++)asm("nop");}/************************************其他延时(8M)Section1:若将i1、i定义为unsignedchar延时将缩短如:定义为char型时-->>i1=-->>i1=(定义为int):i1= Section3(定义为int): i1=(定义为int): i1= Section4=Section3>Section1>Section2(四种不同方式的语句)************************************/voiddelay1(unsignedinti1){/*******Section1********//* unsignedinti=0; asm("nop"); while(i<i1) i++;*/ /********Section2********/// for(;i1>0;i1--)asm("nop"); /********Section3********/// unsignedinti;// for(;i<i1;i++)asm("nop"); /********Section4********/ unsignedinti; while(i<i1) { i++;asm("nop"); }}intmain(void){DDRD=0xff;while(1){ PORTD|=1;//查看PD0电平变化 /*************短延时方式1(查看高电平持续时间)**************///mega48:1M时3us8
AVR精确延时 来自淘豆网m.daumloan.com转载请标明出处.