找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1864|回复: 13
收起左侧

单片机呼吸灯程序为什么周期测得的是8ms

[复制链接]
ID:582255 发表于 2022-3-12 23:30 | 显示全部楼层 |阅读模式
单片机程序如下
定时器设为4ms,每4ms 变量“dd”的值加1,加到11后(44ms),max和min的值变化一次,为什么最后测量到的周期是8ms?
#include "reg51.h"
#include<intrins.h>
unsigned int cd,dd;
unsigned char min=0,max=0x50;

sbit LED=P2^0;
void led_int() interrupt 1 using 0
{
        TH0=0xf1;           //延时约3.905ms初值
        TL0=0xf1;
        TR0=1;
        dd++;
        if(dd==11)
        {
                if((min==0x50)&&(max==0)){cd=0;}
                if((min==0)&&(max==0x50)){cd=1;}
                if(cd){min++;max--;}
                else {min--;max++;}
                dd=0;
        }
}
void delay(unsigned int i)
{

        unsigned int j;
        while(i--)
        {
                for(j=0;j<0x20;j++);
        }

}

void main()
{

        TMOD=0x01;          //模式0
        TH0=0xf1;          //3.905ms高位
        TL0=0xf1;          //3.905ms低位
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
        {
                LED=0;
                delay(max);
                LED=1;
                delay(min);
        }
}

51hei图片20220314233815.png
回复

使用道具 举报

ID:342822 发表于 2022-3-13 10:23 | 显示全部楼层
没看到8ms    只看到32.25ms
回复

使用道具 举报

ID:776619 发表于 2022-3-13 10:30 | 显示全部楼层
TMOD=0x01;          //模式0    它是模式0么?
回复

使用道具 举报

ID:582255 发表于 2022-3-13 18:28 | 显示全部楼层
taotie 发表于 2022-3-13 10:23
没看到8ms    只看到32.25ms

哪个地方?用仿真看了吗
回复

使用道具 举报

ID:401564 发表于 2022-3-13 19:28 | 显示全部楼层
1,那是模式1,不是模式0
2,3.905+3.905=7.81,这难道不是大约8mS的周期吗?没有错呀
3,你要4mS的周期,不是应该要2mS的中断吗?
回复

使用道具 举报

ID:342822 发表于 2022-3-13 20:20 | 显示全部楼层
aktuan007 发表于 2022-3-13 18:28
哪个地方?用仿真看了吗

屏幕截图(125).png
回复

使用道具 举报

ID:582255 发表于 2022-3-13 22:47 | 显示全部楼层

哪个地方可以看到是32.5ms啊啊
求赐教
回复

使用道具 举报

ID:342822 发表于 2022-3-14 09:16 | 显示全部楼层
只有P2^0咋眼睛当然测他了。
方波的上升沿到下一个上升沿为1个周期,
回复

使用道具 举报

ID:161164 发表于 2022-3-14 10:48 | 显示全部楼层
1. taotie兄用的是12MHz, 楼主用的是11.0592MHz
2. TMOD=0x01;定时器0是模式1,定时器1是模式0
3. TR0=1;楼主用的是定时器0
4. 楼主说的周期是什么周期?
定时器0的溢出周期是3.905ms
LED的PWM周期是delay(max);+delay(min);
35.25ms(Protues 11.059zMhz)
回复

使用道具 举报

ID:582255 发表于 2022-3-14 23:39 | 显示全部楼层

大哥我还是不明白啊,为什么我测的是8.2ms
回复

使用道具 举报

ID:582255 发表于 2022-3-14 23:44 | 显示全部楼层

我不会在回复里传图片,又加到原文后面了
回复

使用道具 举报

ID:582255 发表于 2022-3-15 00:13 | 显示全部楼层
delay函数又是延时多少?不是440us?
回复

使用道具 举报

ID:582255 发表于 2022-3-15 09:42 | 显示全部楼层
明白了,原来是我的proteus晶振设置的不对,应该和单片机保持一致都设为11.0592
回复

使用道具 举报

ID:342822 发表于 2022-3-15 11:01 | 显示全部楼层
aktuan007 发表于 2022-3-15 09:42
明白了,原来是我的proteus晶振设置的不对,应该和单片机保持一致都设为11.0592

12M 32.50    11.0592   32.25
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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