[avr能够做到吗]我想我需要的时候能够调用到实时的函数
void Mydelay_200us(void) //延时大概200us 1200 b/s 用{
TR0=0;
TH0=TL0=0;
TR0=1;
while(TL0<174);
}
在51中可以实时调用那些延时函数可以减轻51的负担,
然而我想要在avr弄一个这样的函数,好像不行阿
因为avr没有开启同关闭定时器的功能 如果用timsk这个根本没有可能
难道我们只能用delay.h的库函数来做吗 你把分频时钟设置为零就可以关闭了,用的时候在把正确的分频时钟设置过来就打开了!
你可以试一下! 为啥一个帖子要发两次? lz到上面下载我前2篇11章的教程仔细看过,可能对你很有帮助的. 这个延时函数和软延时有什么区别?一样都不能减轻avr的负担的嘛......... 【4楼】 mojinpan
积分:181
派别:
等级:------
来自:南京
这个延时函数和软延时有什么区别?一样都不能减轻avr的负担的嘛.........
__________________________
Email:mojinpan@163.com
QQ:398968891
MSN:mojinpan@163.com
欢迎指教,共同进步!
--------------------------------------------------------------------------------
同问。 楼主很菜 实际就是基本的概念和知识掌握的不好,那么不管是用51,还是AVR,都很"菜". 延时方案的选择,可以有两种方式,一种是采用CPU原地等待的方式,这种方式浪费资源.
另一种方式,就是利用时间标志,也能达到很好的延时效果,AVR有三个定时器,可以在其中一个定时器的中断里,设置若干个变量,然后把这些变量作为定时标志.如下:
void timer2_comp_isr(void)
{
TCNT2 = 0x06;//compare occured TCNT2=OCR2
h_2ms++;
if(0<h_ms)//赋h_ms大于零时,启动MS计时;
h_ms++;
if(0<h_s)//只有当h_s大于零时,才启动S计时;
h_s++;
}
页:
[1]