[在线研讨会] 求助,怎么让两个定时器产生方波一段时间后同步(附上ch...

[复制链接]
320|9
 楼主 | 2018-1-12 22:29 | 显示全部楼层 |阅读模式
求大神帮个忙

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 手机登录

x
 楼主 | 2018-1-12 22:32 | 显示全部楼层
#include <reg52.h>
#define uint unsigned int
#define uchar unsigend char
sbit led0=P2^1;
sbit led1=P2^2;
void delay(uint);

void time0()
{
        TMOD|=0x01;  //选择定时器0,工作方式1
        TH0=0xfc;         //赋初值,定时1ms
        TL0=0x18;
        ET0=1;                 //打开定时器0中断允许
        EA=1;                 //打开总中断
        TR0=1;                 //打开定时器0
}
void time1()
{
        TMOD|=0x10;          //选择定时器1,工作方式1
        TH1=0xfc;          //赋初值,定时1ms
        TL1=0x18;
        ET1=1;                  //打开定时器1中断允许
        EA=1;                  //打开总中断
        TR1=1;                  //打开定时器1
}
void  same()
{
        uint i,j;
        delay(500);
        if(i==200&&j==200)
        {
                i=0;
                j=0;
        }
}
void main()
{
        time0();
        time1();
        while(1)
        {
                same();
        }
}
void timer0()interrupt 1
{
        uint i;
        TH0=0xfc;
        TL0=0x18;
        i++;
        if(i==200)
        {
                i=0;
                led0=~led0;
        }
}
void timer1()interrupt 3
{
        uint j;
        TH1=0xfc;
        TL1=0x18;
        j++;
        if(j==500)                //未定
        {
                j=0;
                led1=~led1;
        }
}
void delay(uint a)
{
        uint b,c;
        for(b=a;b>0;b--)
                for(c=110;c>0;c--);
}
| 2018-1-13 11:06 | 显示全部楼层
把TR1=1;放在TR0中断里启动,适当调整定时器初值,就可以同步了。
| 2018-1-13 11:55 | 显示全部楼层
你这中断函数本身就有问题,产生的时钟自己就抖动,怎么可能令其他timer同步?
TH1=XX
TL1=XX
这时定时中断后timer已经经过不少拍CPU时钟了。抖起来

另外,51cpu 硬件根本就没法让两TIMER同步走。省省精力吧
| 2018-1-13 18:24 | 显示全部楼层
同频可以做到,同步就做不到,再说做到也没意义,你用终中断方式,中断程序肯定还是有先有后的。
| 2018-1-14 12:06 | 显示全部楼层
51这两个定时器的运行允许位 TRx 在同一个SFR里面,可以控制同步启动,定时器重装的补偿用汇编很好写,C做就麻烦的很,可以修改设计,计数值的低8bit设置为0
比如你的 0xFc18 改为 0xFC00,如果能保证中断的响应速度,只重装THx就可以了
| 2018-1-14 12:09 | 显示全部楼层
你在中断里搞软件延时干嘛?谁教你这样做的??去掉!
| 2018-1-14 12:16 | 显示全部楼层
硬件输出要同步,可以找找你用的芯片有没有PWM。
这两个定时器只有在8bit自动重装模式有硬件输出
| 2018-1-14 12:29 | 显示全部楼层
TMD,这个网站页面是个 猪 做的,Lao子现在想修改帖子都找不到位置。  至少有两年不能主动发贴子了, 一堆蠢猪!
| 2018-1-15 14:04 | 显示全部楼层
没法实现,换芯片
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册 手机登录
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

分享 快速回复 返回顶部 返回列表