打印

请教T0 、T1计数器功能

[复制链接]
2567|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nanfang8|  楼主 | 2007-4-7 15:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教T0 、T1计数器功能,请问这两个脚能否实现自动记数功能,如果能我又应该如何去控制它在一段时间内对输入这两个脚的脉冲进行计数呢,,我一直没有用好这两个脚的计数功能请那位大侠指教一下

相关帖子

沙发
ayb_ice| | 2007-4-7 15:53 | 只看该作者

随便说说

计数与定时一样,只是定时是对机器周期计数,而计数是对外部脉冲读数而已...

使用特权

评论回复
板凳
nanfang8|  楼主 | 2007-4-7 16:42 | 只看该作者

随便说说

那我应该如何设置它对外部脉冲计数呢

使用特权

评论回复
地板
ayb_ice| | 2007-4-7 16:48 | 只看该作者

设为读数方式就可以了...

使用特权

评论回复
5
nanfang8|  楼主 | 2007-4-7 16:49 | 只看该作者

随便说说

是和启动定时器一样吗,还有启动计数后计数的个数值放到了哪个寄存器里了,我事先不知道  它记了多少个脉冲请各位大侠指点指点

使用特权

评论回复
6
ayb_ice| | 2007-4-7 16:55 | 只看该作者

你真是菜鸟

你这种不爱看书的,建议改行...
就一个定时器,发了几个帖子,好多天了,看书早就会用了...

使用特权

评论回复
7
nanfang8|  楼主 | 2007-4-11 11:32 | 只看该作者

随便说说

我刚刚接触单片机。有很多不理解的地方当然向你们求教了
所以问了这样低等的问题

使用特权

评论回复
8
nanfang8|  楼主 | 2007-4-11 11:46 | 只看该作者

随便说说

所以我还是想知道如何用它的计数功能,计数值是事先设定好的,还是不知道再检测计数值多少呢

使用特权

评论回复
9
maychang| | 2007-4-11 12:17 | 只看该作者

四天了

仔细看看书,至多用半个小时即可解决,不过是设置两个寄存器而已。

使用特权

评论回复
10
nanfang8|  楼主 | 2007-4-11 17:35 | 只看该作者

随便说说

#define    _shihua_mangyin_
#include    "include.h"
#include    "reg52.h"
void sy()
{     
    UCHAR mmxh;            
    TMOD=0x05;
    IE=0x82;
    TL0=0;
    TH0=0;
    TR0=1;
    for(mmxh=0;mmxh<255;mmxh++)
    {
        mmxh=0;
        if(flag00==1)
        {   flag00==0;    ZJJT=0; TR0=0; break;    }
    }                                                           
}    

void times() interrupt 1 using 2
{
    static UINT16 counts;
    counts=TH0;
    counts=counts<<8;
    counts=TL0;
//    counts++;
    if(counts==10)
    { counts==0;flag00=1;}
}    
请教大家为什么不计数呢

使用特权

评论回复
11
nanfang8|  楼主 | 2007-4-11 17:36 | 只看该作者

随便说说

我怎么看书就是不计数啊

使用特权

评论回复
12
turmary| | 2007-4-11 18:29 | 只看该作者

ABC

程序有没有问题

光看书不行~~~
用仿真器调试一下儿就知道了

使用特权

评论回复
13
turmary| | 2007-4-11 19:13 | 只看该作者

问题太多了


  死循环
中断条件不对...... 不堪入目,不出问题才怪....

定时寄存器倒是没什么大问题,

使用特权

评论回复
14
airwill| | 2007-4-12 06:47 | 只看该作者

呵呵

    这小伙子把程序都贴上了, 还算诚挚.
这么诚恳好学, 还是值得赞赏的.
看样子, 学习还不得法, 大侠们多指点, 要诲人不倦才是.
楼主, 你是怎么知道它不计数的呢?

使用特权

评论回复
15
ayb_ice| | 2007-4-12 07:44 | 只看该作者

随便说说

void times() interrupt 1 using 2
{
    static UINT16 counts;

    counts=TH0;
    counts=counts<<8;
    counts=TL0;// 此处对counts重新赋值,那么上面两句不是费话
//    counts++;
    if(counts==10)
    { counts==0;flag00=1;}
}
看来LZ不仅仅是不会MCU的问题,要学的东西很多...

使用特权

评论回复
16
nanfang8|  楼主 | 2007-4-13 14:25 | 只看该作者

rrr

是有问题,问题很多还要自己来改吧

使用特权

评论回复
17
turmary| | 2007-4-13 20:13 | 只看该作者

自已改才会有进步

改正确后会有可观的进步~~~

对中断号为interrupt 1的中断,
是T0的计数寄存器TH0,TL0值计到0时发生,
计数个数由它们的初值确定.

使用特权

评论回复
18
huangqi412| | 2007-4-13 21:41 | 只看该作者

找两个例子看一下,自己写一下,就可以拉

使用特权

评论回复
19
nanfang8|  楼主 | 2007-4-14 09:23 | 只看该作者

ww

谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

172

主题

406

帖子

0

粉丝