找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1768|回复: 4
收起左侧

关于STC15单片机定时器问题,自制红外转射频的模块用天猫精灵控制窗帘

[复制链接]
ID:922022 发表于 2021-5-16 14:12 | 显示全部楼层 |阅读模式
本帖最后由 凤城大六 于 2021-5-17 07:19 编辑

我刚开始自学单片机,想自己做个红外转射频的模块用天猫精灵控制窗帘,因为自己水平有限,红外接收和射频发射是从网上找的两个程序自己组合修改的,现在遇到过个问题,就是做了个10ns的定时函数,其它地方都调好了,就是正码和反码之间有个31ms的延时怎么也做不出来,最多只能延时到19ms,请大佬给看下要怎么解决?void Delay10us(unsigned int us)                //@11.0592MHz
{
        unsigned int cycle = 0;
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x91;                //设置定时初值
        TH0 = 0xFF;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        while(1)
        {
                if(TF0==1)        //检测定时器0是否溢出
                {
                        TF0 = 0;        //若溢出,则重置检测位TF0
                        TL0 = 0x91;
                        TH0 = 0xFF;
                        cycle++;
                        if(cycle>=us)
                                break;
                }
        }
}
如图前面一组波形正确,后面要跟一个Delay10us(3100);,结果后面那组波形就变形,且间隔时间只有19ms多

screenshot1.png



试了下Delay10us(1800);,后面的波形就正常
screenshot2.png

怎么样既能延时31ms又保持波形正常呢?
先谢谢各位了!

回复

使用道具 举报

ID:414556 发表于 2021-5-17 19:40 | 显示全部楼层
需要精确定时就要用定时中断处理,程序定时受其他中断影响,时间会不稳定。
回复

使用道具 举报

ID:922022 发表于 2021-5-19 14:22 | 显示全部楼层
要发射的射频码有5组正6组反,正反之前是31ms间隔,组组之间是11ms,加上起始的高低电平时间,逻辑1和逻辑0的高低电平时间,要计算的时间有9个,用的stc15f104w或stc15w104只有两个定时器T0和T2,T2的中断用来接收红外信号了,能用的只有一个T0的中断,试着在中断里加多个标志位来计算不同间隔没成功,应该是水平问题没写对
回复

使用道具 举报

ID:922022 发表于 2021-5-21 21:21 | 显示全部楼层
发现问题了,之前是从接收模块拍片抓的波形,换到发射脚就正常了,这样确定是发射模块的问题了
回复

使用道具 举报

ID:922022 发表于 2021-6-11 19:49 | 显示全部楼层
找到原因了,发射模块天线是弹簧式卷着的,拉直就正常了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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