125008301 发表于 2008-6-9 13:52:12

[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的库函数来做吗

pcb_pcb_ok 发表于 2008-6-9 14:28:37

你把分频时钟设置为零就可以关闭了,用的时候在把正确的分频时钟设置过来就打开了!
你可以试一下!

ahfong2006 发表于 2008-6-9 14:53:29

为啥一个帖子要发两次?

machao 发表于 2008-6-9 15:57:32

lz到上面下载我前2篇11章的教程仔细看过,可能对你很有帮助的.

mojinpan 发表于 2008-6-24 07:31:51

这个延时函数和软延时有什么区别?一样都不能减轻avr的负担的嘛.........

china_china 发表于 2008-6-24 08:08:54

【4楼】 mojinpan
积分:181
派别:
等级:------
来自:南京
        这个延时函数和软延时有什么区别?一样都不能减轻avr的负担的嘛.........
__________________________
Email:mojinpan@163.com
QQ:398968891
MSN:mojinpan@163.com
欢迎指教,共同进步!

--------------------------------------------------------------------------------

同问。

wswh2o 发表于 2008-6-24 09:49:08

楼主很菜

machao 发表于 2008-6-24 20:00:00

实际就是基本的概念和知识掌握的不好,那么不管是用51,还是AVR,都很"菜".

kegaank 发表于 2008-6-25 08:09:09

延时方案的选择,可以有两种方式,一种是采用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]
查看完整版本: [avr能够做到吗]我想我需要的时候能够调用到实时的函数