基于51的RLC测量电路,定时器部分不太懂

2019-03-24 17:37发布

基本原理是用555定时器组成振荡器,用51单片机的定时器进行计数。然后代码中的定时器部分不懂,求助各位
附上定时器部分的代码:


赋初值:
TMOD=0x15;//0001 0101
          TH0=0;
          TL0=0;
          TH1=(65536-49989)/256; //T1设初值
          TL1=(65536-49989)%256;



中断:
void t0(void) interrupt 1 using 0        //计脉冲个数
{
  T0count++;
}

void t1(void) interrupt 3 using 0         //定时1s
{
  TH1=(65536-50045)/256;
  TL1=(65536-50045)%256;
  timecount++;
    if(timecount==20)
    {
      TR0=0;
      TR1=0;
      timecount=0;
      flag=1;
    }
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
ywlzh
1楼-- · 2019-03-24 23:22
其实楼主是不理解
TMOD=0x15;//0001 0101
给你张图,从网上找的
09464U106-4.jpg
由图可见,TMOD的高4位用于T1,低4使用于T0  GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。  C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。TMOD=0x15//就是用了定时器0的计数功能,这个计数就要对应到相应的引脚上去,来一个脉冲,累加1
而楼主中程序还用定时器1来定一个1S中,这个用来干嘛?这个不用解释吧,1s中记了多少个数,这个数的意义是什么?不用解释了吧
zhangxiajoa
2楼-- · 2019-03-25 04:38
ywlzh 发表于 2016-5-29 22:16
其实楼主是不理解
TMOD=0x15;//0001 0101
给你张图,从网上找的

由图可见,TMOD的高4位用于T1,低4使 ...

谢谢大神费心专门找图,TMOD的作用我知道,我当时也对这句话做了注释:TMOD=0x15;//0001 0101 最高位GATE为0,低四位表示T0工作在方式一(16位)计数模式,高四位表示T1工作在方式一(16位)定时模式
刚发帖的时候把注释删了不敢献丑,定时器0的作用我知道就是对外部脉冲计数,而定时器1定时1s的作用我真的不理解……可能这个问题问的很白痴…还望大神不吝赐教~
ywlzh
3楼-- · 2019-03-25 05:57
 精彩回答 2  元偷偷看……
zhangxiajoa
4楼-- · 2019-03-25 09:36
哦哦,是的,谢谢大神
所以它对外部事件计算频率跟cpu的主频无关了,是这样么
还有一个疑问:连接555构成的振荡器后,单片机就不断的在重复计数,初始化,计数的过程,那怎么传递计数值呢?是不是flag在起作用,函数里写的是初始化定时器后就将flag清0,而计算电阻电容时需要判断flag==0才能进入计算程序,整个流程还不是特别懂
电子微创意
5楼-- · 2019-03-25 11:11
建议好好搞清楚计数器的用法,和RLC测量的原理,搞清楚基本的原理才能着手码代码
zhangxiajoa
6楼-- · 2019-03-25 12:08
 精彩回答 2  元偷偷看……

一周热门 更多>